新聞中心

        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


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 林西县| 湘乡市| 鹿邑县| 康马县| 项城市| 凌源市| 古丈县| 酉阳| 连城县| 英德市| 宣威市| 嘉峪关市| 芜湖市| 洪泽县| 淮南市| 全椒县| 敖汉旗| 中超| 施秉县| 屏山县| 绥棱县| 伊金霍洛旗| 玉龙| 垦利县| 古浪县| 井研县| 高邑县| 宣汉县| 迁西县| 汝州市| 武强县| 福鼎市| 大姚县| 新余市| 英德市| 渭南市| 长治县| 新巴尔虎左旗| 自治县| 凤冈县| 德钦县|