新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 正交解碼及在旋轉(zhuǎn)編碼器中的應(yīng)用

        正交解碼及在旋轉(zhuǎn)編碼器中的應(yīng)用

        作者: 時間: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

        實(shí)際的電路

        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


        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 乌兰浩特市| 凌源市| 息烽县| 城步| 南川市| 慈溪市| 大英县| 宜丰县| 阜新| 潼南县| 曲松县| 金山区| 驻马店市| 黔东| 通州市| 滨海县| 图们市| 隆安县| 甘孜县| 墨竹工卡县| 昌图县| 依安县| 乐安县| 锦州市| 同江市| 刚察县| 潞西市| 永新县| 绥中县| 万源市| 合江县| 宝应县| 青铜峡市| 富民县| 孟津县| 金塔县| 绥滨县| 邛崃市| 黔东| 昌图县| 汶上县|