• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 正交解碼及在旋轉編碼器中的應用

    正交解碼及在旋轉編碼器中的應用

    作者: 時間:2024-01-25 來源:電子森林 收藏

    module quad(clk, quadA, quadB, count);
    input clk, quadA, quadB;
    output [7:0] count; 
    reg quadA_delayed, quadB_delayed;
    always @(posedge clk) quadA_delayed <= quadA;
    always @(posedge clk) quadB_delayed <= quadB; 
    wire count_enable = quadA ^ quadA_delayed ^ quadB ^ quadB_delayed;
    wire count_direction = quadA ^ quadB_delayed; 
    reg [7:0] count;
    always @(posedge clk)begin
      if(count_enable)
      begin
        if(count_direction) count<=count+1; 
        else count<=count-1;
      end
     end 
     endmodule

    實際的電路

    module quad(clk, quadA, quadB, count);
    input clk, quadA, quadB;output [7:0] count; 
    reg [2:0] quadA_delayed, quadB_delayed;
    always @(posedge clk) quadA_delayed <= {quadA_delayed[1:0], quadA};
    always @(posedge clk) quadB_delayed <= {quadB_delayed[1:0], quadB}; 
    wire count_enable = quadA_delayed[1] ^ quadA_delayed[2] ^ quadB_delayed[1] ^ quadB_delayed[2];
    wire count_direction = quadA_delayed[1] ^ quadB_delayed[2]; 
    reg [7:0] count;
    always @(posedge clk)begin
      if(count_enable)
      begin
        if(count_direction) count<=count+1; else count<=count-1;
      end
     end 
      endmodule


    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 金昌市| 麻栗坡县| 普陀区| 博白县| 台安县| 西安市| 临西县| 洪江市| 和平县| 衡阳市| 梁河县| 仁怀市| 荃湾区| 平南县| 钟祥市| 兰州市| 罗甸县| 崇明县| 盖州市| 海淀区| 临漳县| 衢州市| 龙川县| 霍林郭勒市| 文成县| 潞西市| 玉屏| 长治县| 云林县| 苗栗县| 阜新市| 汾西县| 克什克腾旗| 武川县| 昌黎县| 肥乡县| 大新县| 巩留县| 宁化县| 临安市| 溧水县|