ModelSim軟件怎么理解,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司專(zhuān)注于企業(yè)成都營(yíng)銷(xiāo)網(wǎng)站建設(shè)、網(wǎng)站重做改版、涿州網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為涿州等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
module Verilog_First
(
//輸入端口
CLK_50M,RST_N,
//輸出端口
LED1
);
//---------------------------------------------------------------------------
//-- 外部端口聲明
//---------------------------------------------------------------------------
input CLK_50M; //時(shí)鐘的端口,開(kāi)發(fā)板用的50M晶振
input RST_N; //復(fù)位的端口,低電平復(fù)位
output LED1; //對(duì)應(yīng)開(kāi)發(fā)板上的LED
//---------------------------------------------------------------------------
//-- 內(nèi)部端口聲明
//---------------------------------------------------------------------------
reg [26:0] time_cnt; //用來(lái)控制LED閃爍頻率的定時(shí)計(jì)數(shù)器
reg led_reg; //用來(lái)控制LED亮滅的顯示寄存器
//設(shè)置定時(shí)器的時(shí)間為1s,計(jì)算方法為 (1*10^6)us / (1/50)us 50MHz為開(kāi)發(fā)板晶振
//parameter SET_TIME_1S = 27'd49_999_999;
parameter SET_TIME_1S = 27'd49 ; //用于仿真
//---------------------------------------------------------------------------
//-- 邏輯功能實(shí)現(xiàn)
//---------------------------------------------------------------------------
//時(shí)序電路,實(shí)現(xiàn)1s的定時(shí)計(jì)數(shù)器
always @ (posedge CLK_50M or negedge RST_N)
begin
if(!RST_N) //判斷復(fù)位
time_cnt <= 27'h0; //初始化time_cnt值
else if(time_cnt == SET_TIME_1S) //判斷1s時(shí)間
time_cnt = 27'h0; //如果到達(dá)1s,定時(shí)計(jì)數(shù)器將會(huì)被清零
else
time_cnt = time_cnt + 27'h2;//如果未到1s,定時(shí)計(jì)數(shù)器將會(huì)繼續(xù)累加
end
//---------------------------------------------------------------------------
//時(shí)序電路,判斷時(shí)間,控制LED的亮或滅
always @ (posedge CLK_50M or negedge RST_N)
begin
if(!RST_N) //判斷復(fù)位
led_reg <= 1'b0; //初始化led_reg值
else if(time_cnt == SET_TIME_1S) //判斷1s時(shí)間
led_reg = ~led_reg; //如果到達(dá)1s,顯示寄存器將會(huì)改變LED的狀態(tài)
else
led_reg = led_reg; //如果未到1s,顯示寄存器將會(huì)將保持LED的原狀態(tài)
end
assign LED1 = led_reg; //最后,將顯示寄存器的值賦值給端口LED1
endmodule
`timescale 1 ps/ 1 ps
module Verilog_First_vlg_tst();
reg CLK_50M;
reg RST_N;
// wires
wire 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)
);
initial
begin
#0 CLK_50M = 1'b0;
#10000 RST_N = 1'b0;
#10000 RST_N = 1'b1;
#10000000 $stop;
end
always #10000
begin
CLK_50M = ~CLK_50M;
end
endmodule
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。