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)
begin
if(!RST_N) //判断复位
time_cnt <= 27'h0; //初始化time_cnt值
else if(time_cnt == SET_TIME_1S) //判断1s时间
time_cnt = 27'h0; //如果到达1s,定时计数器将会被清零
else
time_cnt = time_cnt + 27'h2;//如果未到1s,定时计数器将会继续累加
end
//---------------------------------------------------------------------------
//时序电路,判断时间,控制LED的亮或灭
always @ (posedge CLK_50M or negedge RST_N)
begin
if(!RST_N) //判断复位
led_reg <= 1'b0; //初始化led_reg值
else if(time_cnt == SET_TIME_1S) //判断1s时间
led_reg = ~led_reg; //如果到达1s,显示寄存器将会改变LED的状态
else
led_reg = led_reg; //如果未到1s,显示寄存器将会将保持LED的原状态
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
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。