ModelSim軟件怎么理解,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
module Verilog_First(//輸入端口CLK_50M,RST_N,//輸出端口LED1);//---------------------------------------------------------------------------//-- 外部端口聲明//---------------------------------------------------------------------------input CLK_50M; //時鐘的端口,開發板用的50M晶振input RST_N; //復位的端口,低電平復位output LED1; //對應開發板上的LED//---------------------------------------------------------------------------//-- 內部端口聲明//---------------------------------------------------------------------------reg [26:0] time_cnt; //用來控制LED閃爍頻率的定時計數器reg led_reg; //用來控制LED亮滅的顯示寄存器//設置定時器的時間為1s,計算方法為 (1*10^6)us / (1/50)us 50MHz為開發板晶振//parameter SET_TIME_1S = 27'd49_999_999;parameter SET_TIME_1S = 27'd49 ; //用于仿真//---------------------------------------------------------------------------//-- 邏輯功能實現//---------------------------------------------------------------------------//時序電路,實現1s的定時計數器always @ (posedge CLK_50M or negedge RST_N)beginif(!RST_N) //判斷復位time_cnt <= 27'h0; //初始化time_cnt值else if(time_cnt == SET_TIME_1S) //判斷1s時間time_cnt = 27'h0; //如果到達1s,定時計數器將會被清零elsetime_cnt = time_cnt + 27'h2;//如果未到1s,定時計數器將會繼續累加end//---------------------------------------------------------------------------//時序電路,判斷時間,控制LED的亮或滅always @ (posedge CLK_50M or negedge RST_N)beginif(!RST_N) //判斷復位led_reg <= 1'b0; //初始化led_reg值else if(time_cnt == SET_TIME_1S) //判斷1s時間led_reg = ~led_reg; //如果到達1s,顯示寄存器將會改變LED的狀態elseled_reg = led_reg; //如果未到1s,顯示寄存器將會將保持LED的原狀態endassign LED1 = led_reg; //最后,將顯示寄存器的值賦值給端口LED1endmodule
`timescale 1 ps/ 1 psmodule Verilog_First_vlg_tst();reg CLK_50M;reg RST_N;// wireswire LED1;// assign statements (if any)Verilog_First i1 (// port map - connection between master ports and signals/registers.CLK_50M(CLK_50M),.LED1(LED1),.RST_N(RST_N));initialbegin#0 CLK_50M = 1'b0;#10000 RST_N = 1'b0;#10000 RST_N = 1'b1;#10000000 $stop;endalways #10000beginCLK_50M = ~CLK_50M;endendmodule
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。