Quartus+Modelsim:流水灯


前言

在这里插入图片描述
流水灯的效果是让4个LED灯从右往左依次点亮,每次点亮的时间间隔为0.5s。


一、代码

1.rtl代码

代码如下(示例):

module water_led
#(
parameter CNT_MAX=25'd24_999_999
)
(
input wire sys_clk,
input wire sys_rst_n,
output wire [3:0] led_out//输出没有延迟,用组合逻辑
);
reg [24:0] cnt;//十进制24_999_999对应二进制为25位,用计算器
reg cnt_flag;
reg [3:0]led_out_reg;

always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n==1'b0)
        cnt<=25'd0;
    else if(cnt==CNT_MAX)
        cnt<=25'd0;
    else
        cnt<=cnt+25'd1;
        
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n==1'b0)  
    cnt_flag<=1'b0;
    else if(cnt==(CNT_MAX)-25'd1)
    cnt_flag<=1'b1;
    else
    cnt_flag<=1'b0;

//  <<:左移运算符,>>:右移运算符    
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n==1'b0) 
        led_out_reg<=4'b0001;
    else if((led_out_reg==4'b1000)&&(cnt_flag==1'b1))
        led_out_reg<=4'b0001;
    else if(cnt_flag==1'b1)
        led_out_reg<=led_out_reg<<1;
    else
        led_out_reg<=led_out_reg;    

assign led_out=~led_out_reg;

endmodule

2.测试代码

代码如下(示例):

`timescale 1ns/1ns
module tb_water_led();
reg sys_clk;
reg sys_rst_n;
wire [3:0] led_out;

initial
    begin
    sys_clk=1'b1;
    sys_rst_n<=1'b0;
    #20
    sys_rst_n<=1'b1;
    end
    
always #10 sys_clk=~sys_clk;

water_led 
#(
.CNT_MAX(25'd24)
)
water_led_inst
(
.sys_clk      (sys_clk),
.sys_rst_n    (sys_rst_n),
.led_out(led_out)
);

endmodule

三、仿真结果

在这里插入图片描述
输出与绘制波形图一致,是左移的。
在这里插入图片描述
计数器到达最大值24时又恢复为0,flag信号在最大值-1时拉高电平,与理论一致。

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
QuartusModelSim是两种常用的电子设计自动化(EDA)软件,可以用于硬件描述语言的编写和仿真。为了实现QuartusModelSim的联合仿真,可以按照以下步骤进行设置。 首先,打开Quartus软件,并在路径设置中关联ModelSim。在Quartus的菜单栏中选择"Assignments",然后选择"Settings"。在弹出的对话框中选择"EDA Tool Settings",找到"Simulation"选项卡。在该选项卡中,找到"Tool Name",选择"ModelSim-Altera"。然后点击"Browse"按钮,选择ModelSim的安装路径,通常是在 "D:\FPGA\2\modelsim_ase\win32aloem"。完成之后点击"OK"保存设置。 接下来,编写Verilog HDL代码,并在Quartus中生成激励文件。可以通过Quartus生成激励文件,根据需要编辑激励文件,生成所需的激励信号。 最后,进行联合仿真。在Quartus中,选择"Tools"菜单下的"Run Simulation Tool",然后选择"RTL Simulation"。这将打开ModelSim,并加载Verilog HDL代码和生成的激励文件。在ModelSim中,可以运行仿真并查看波形图来验证设计的正确性。 总结起来,要在Quartus中联合ModelSim进行仿真,需要先设置Quartus关联ModelSim的路径,然后编写Verilog HDL代码并生成激励文件,最后运行联合仿真来产生波形图。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [QuartusModelSim软件关联](https://blog.csdn.net/caozhaokun/article/details/129393474)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [quartusmodelsim联合仿真详细教程](https://blog.csdn.net/waj123456WAJ/article/details/107999187)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小年痴槑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值