1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          Verilog之計數器設計實現

          來源:互聯網轉載 時間:2023-09-09 23:23:17

          計數器

          一、寫在前面

        1. 計數器是數字系統和計算機系統常用的基本模塊,是計數寄存器的簡稱
        2. 74LS161模塊是一個同步加法計數器(通用計數器)
        3. 下圖為其的接口描述

          下圖為功能描述

          二、進入正題

          廢話不多說,我們進入正題——74LS161的設計:
          開門見山給出我的Verilog代碼(經過仿真驗證過):

          module My74LS161(input CP,CR,input CTP,CTT,input L_D,input [3:0] D,output reg [3:0] Q,output CO );parameter State_0 = 4'b0000,State_1 = 4'b0001,State_2 = 4'b0010,State_3 = 4'b0011,State_4 = 4'b0100,State_5 = 4'b0101,State_6 = 4'b0110,State_7 = 4'b0111,State_8 = 4'b1000,State_9 = 4'b1001,State_10 = 4'b1010,State_11 = 4'b1011,State_12 = 4'b1100,State_13 = 4'b1101,State_14 = 4'b1110,State_15 = 4'b1111;always @(posedge CP,negedge CR) beginif(~CR) beginQ <= 0;end else if(~L_D) beginQ <= D;endelse beginif(CTT & CTP)begincase(Q)State_0 : Q <= State_1;State_1 : Q <= State_2;State_2 : Q <= State_3;State_3 : Q <= State_4;State_4 : Q <= State_5;State_5 : Q <= State_6;State_6 : Q <= State_7;State_7 : Q <= State_8;State_8 : Q <= State_9;State_9 : Q <= State_10;State_10 : Q <= State_11;State_11 : Q <= State_12;State_12 : Q <= State_13;State_13 : Q <= State_14;State_14 : Q <= State_15;State_15 : Q <= State_0;endcaseendendendassign CO = (&Q) &CTT; endmodule

          實現思想是:有限狀態機,這里一共0~15,十六個狀態,實現這些狀態之間的相互轉換即可,當然也可以通過其他方法給出。

          順便給出我的仿真代碼

          initial beginCR = 0;D = 0;CTP = 0;CTT = 0;L_D = 0;#100;CR = 1;L_D= 1;D = 4'b1100;CTT = 0;CTP = 0;#30 CR = 0;#20 CR = 1;#10 L_D = 0;#30 CTT = 1;CTP = 1;#10 L_D = 1;#510;CR = 0;#20 CR = 1;#500; end always beginCP = 0;#20;CP = 1;#20; end

          仿真結果(ISE)

          三、24,60進制計數器

          設計好了74LS141模塊后,就可以設計24,60進制計數器了,這里給出電路圖

          實際上我們可以通過兩個74LS161模塊搭成24進制計數器,這里我們采用BCD編碼,也就是說個位是逢9清零或者是碰到23就清零,十位是碰到23清零。
          可以采取兩個與非門用來檢測這個9或者23,從而判斷是否清零。
          獻上代碼:

          module Counter_24(input clk,input rst,output C24,output [7:0] Q ); //BCD編碼,Q[7:4]是十位數,Q[3:0]是個位數wire LD1;wire CT;wire NAND_1,NAND_2;assign NAND_1 = ~(Q[0]&Q[3]); //檢測9的出現assign NAND_2 = ~(Q[0]&Q[1]&Q[5]); //檢測23的出現assign LD1 = NAND_1 & NAND_2;assign C24 = NAND_2;assign CT = ~NAND_1;//兩個74LS161分別計數My74LS161 m1 (.CP(clk),.CR(rst),.CTP(1'b1),.CTT(1'b1),.L_D(LD1),.D(4'b0000),.Q({Q[3],Q[2],Q[1],Q[0]}));My74LS161 m2 (.CP(clk),.CR(rst),.CTP(CT),.CTT(CT),.L_D(NAND_2),.D(4'b0000),.Q({Q[7],Q[6],Q[5],Q[4]}));endmodule

          同理,獻上60進制計數器

          module Counter_60(input clk,input rst,output C60,output [7:0] Q );wire LD1;wire CT;wire NAND_1,NAND_2;assign NAND_1 = ~(Q[0]&Q[3]);assign NAND_2 = ~(Q[5]&Q[6]);assign LD1 = NAND_1 & NAND_2;assign C60 = NAND_2;assign CT = ~NAND_1;My74LS161 m1 (.CP(clk),.CR(rst),.CTP(1'b1),.CTT(1'b1),.L_D(LD1),.D(4'b0000),.Q({Q[3],Q[2],Q[1],Q[0]}));My74LS161 m2 (.CP(clk),.CR(rst),.CTP(CT),.CTT(CT),.L_D(NAND_2),.D(4'b0000),.Q({Q[7],Q[6],Q[5],Q[4]}));endmodule

          四、附加思考

          在某位同學的要求下,我考慮了一下關于計數器初始值的問題,上面默認計數器從0開始計數,逢60或24再清為0;但是我們也可以要求計數器從比如23開始計數。
          下面是Verilog代碼:

          module My74LS161(input CP,CR, //時鐘CP,清零CRinput CTP,CTT, //CTP和CTT使能端input L_D, //load信號input [3:0] D, //清零值input [3:0] D_CR, //初始值output reg [3:0] Q,output CO );parameter State_0 = 4'b0000,State_1 = 4'b0001,State_2 = 4'b0010,State_3 = 4'b0011,State_4 = 4'b0100,State_5 = 4'b0101,State_6 = 4'b0110,State_7 = 4'b0111,State_8 = 4'b1000,State_9 = 4'b1001,State_10 = 4'b1010,State_11 = 4'b1011,State_12 = 4'b1100,State_13 = 4'b1101,State_14 = 4'b1110,State_15 = 4'b1111;always @(posedge CP,negedge CR) beginif(~CR) beginQ <= D_CR; //這里從0改為D_CR,表示初始值end else if(~L_D) beginQ <= D;endelse beginif(CTT & CTP)begincase(Q) //時鐘來臨,到達下一周期State_0 : Q <= State_1;State_1 : Q <= State_2;State_2 : Q <= State_3;State_3 : Q <= State_4;State_4 : Q <= State_5;State_5 : Q <= State_6;State_6 : Q <= State_7;State_7 : Q <= State_8;State_8 : Q <= State_9;State_9 : Q <= State_10;State_10 : Q <= State_11;State_11 : Q <= State_12;State_12 : Q <= State_13;State_13 : Q <= State_14;State_14 : Q <= State_15;State_15 : Q <= State_0;endcaseendendendassign CO = (&Q) &CTT; endmodule

          于是設定初始值為13的24進制計數器可以修改為:

          module Counter_24(input clk,input rst,output C24,output [7:0] Q );wire LD1;wire CT;wire NAND_1,NAND_2;assign NAND_1 = ~(Q[0]&Q[3]);assign NAND_2 = ~(Q[0]&Q[1]&Q[5]);assign LD1 = NAND_1 & NAND_2;assign C24 = NAND_2;assign CT = ~NAND_1;My74LS161 m1 (.CP(clk),.CR(rst),.CTP(1'b1),.CTT(1'b1),.L_D(LD1),.D(4'b0000),.D_CR(4'b0011), //設置初值.Q({Q[3],Q[2],Q[1],Q[0]}));My74LS161 m2 (.CP(clk),.CR(rst),.CTP(CT),.CTT(CT),.L_D(NAND_2),.D(4'b0000),.D_CR(4'b0001), //設置初值.Q({Q[7],Q[6],Q[5],Q[4]}));endmodule

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          上海到蚌埠火車時刻表?上海站到蚌埠站有34路,上海南站到蚌埠有8路。武漢到蚌埠的火車時刻表?11:35(武漢)~14:44(蚌埠南)G 1742: 14336015(武漢)~ 17: 50(蚌埠南)蚌埠到北京臥鋪9點的火車幾點到北京?所有D字頭、K字頭、T字頭、Z字頭列車其他發車-到發時間-當時車型運行時間及里程參考票價T64蚌埠-北京01:12-天10336012空調快車9小時0分鐘978公里...

          常州市北郊中學(初中部)在哪?學校地址北滘中學(初中部)萬福校區地址:常州市萬福路12號北郊中學新北校區(高中分校)地址:常州華山北路18號“常州市華山北路18號常州北郊中學”附近北郊中學新校區-汽車站23米公交路線:13路、19路、19路、13路、13路、13路、13路、13路、13路、15路。點擊詳情列表查看公交13路(小營前路橋市場-小辛橋)3號路(小新橋-小營前路橋市場)9號路(金海星城-...

          tvb男演員一覽表tvb男演員:tvb老演員男明星? 1、羅嘉良 羅嘉良(Gallen Lo),1962年12月16日出生于中國香港,祖籍廣東東莞,演員、歌手,三次獲獎TVB萬千星輝頒獎典禮最佳男主角獎是第一個三次獲得該獎項的人TVB藝人 。 2、陶大宇 陶大宇(Michael Tao),1963年8月26日出生于中國香港,是中國香港的影視演員。1983年,從無線電視藝人培訓班畢業后,他加入了無線...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>