集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 3255|回复: 9

这段程序怎么运行的?

[复制链接]
interig 发表于 2010-6-26 00:49:06 | 显示全部楼层 |阅读模式
本帖最后由 fpgaw 于 2010-7-12 12:26 编辑

module sled (seg , sl , clock);                    //定义模块结构
      output [7:0] seg;                       //定义数码管段输出引脚
    output [3:0] sl;                    //定义数码管选择输出引脚
      input clock;                        //定义输入时钟引脚

    reg [7:0] seg_reg;                    //定义数码管段输出寄存器
    reg [3:0] sl_reg;                    //定义数码管选择输出寄存器
    reg [3:0] disp_dat;                    //定义显示数据寄存器
    reg [7:0] count;                    //定义计数器寄存器

always @(posedge clock)                           //定义clock信号下降沿触发
begin
    count=count+1;                    //计数器值加1
end

always
begin
    sl_reg=4'b0000;
end

always @(count[4])                           //定义显示数据触发事件
begin
    disp_dat = count[7:4];                              //显示个位数值
end

always @(disp_dat)                        //显示译码输出
begin
    case (disp_dat)                    //选择输出数据
        4'h0: seg_reg = 8'hc0;                //显示0
        4'h1: seg_reg = 8'hf9;                //显示1
        4'h2: seg_reg = 8'ha4;                //显示2
        4'h3: seg_reg = 8'hb0;                //显示3
        4'h4: seg_reg = 8'h99;                //显示4
        4'h5: seg_reg = 8'h92;                //显示5
        4'h6: seg_reg = 8'h82;                //显示6
        4'h7: seg_reg = 8'hf8;                //显示7
        4'h8: seg_reg = 8'h80;                //显示8
        4'h9: seg_reg = 8'h90;                //显示9
        4'ha: seg_reg = 8'h88;                //显示a
        4'hb: seg_reg = 8'h83;                //显示b
        4'hc: seg_reg = 8'hc6;                //显示c
        4'hd: seg_reg = 8'ha1;                //显示d
        4'he: seg_reg = 8'h86;                //显示e
        4'hf: seg_reg = 8'h8e;                //显示f
    endcase
end

assign seg=seg_reg;                        //输出数码管译码结果
assign sl=sl_reg;                        //输出数码管选择

endmodule

对于这段程序有个问题:寄存器count是一个8位的寄存器,当它计数满以后,即FF后,程序还能运行吗?为什么
interige 发表于 2010-6-26 01:24:04 | 显示全部楼层
FF加1以后变为100,这样count变为00,因此电路可以工作
VVC 发表于 2010-6-26 02:13:19 | 显示全部楼层
可以运行<br>
计数到FF后会再到0
usd 发表于 2010-6-26 03:16:59 | 显示全部楼层
谢谢版主和loong的回答!<br>
但对于这段程序我直接建了一个tbw波形文件进行仿真,为何不行,一定要写testbench吗?
encounter 发表于 2010-6-26 03:49:58 | 显示全部楼层
不一定非写testbench的吧<br>
看看是不是别的地方出了什么问题
VVC 发表于 2010-6-26 04:48:37 | 显示全部楼层
为什么我仿真这段程序的时候,老报&ldquo;# ** Error: (vsim-3601) Iteration limit reached at time 0 ps.<br>
ERROR: VSim failed to simulate annotated testbench&rdquo;的错误信息,对于其他的时序电路也是这个错误,但组合电路就没有这个错误信息,这是什么原因呢?
longtim 发表于 2010-6-26 06:46:11 | 显示全部楼层
hehehehehhehehhe
ATA 发表于 2010-6-26 07:55:30 | 显示全部楼层
关注啊
interi 发表于 2010-6-26 08:57:41 | 显示全部楼层
fffffffffffffffffffffffffffffffffffffffffff
Sunlife 发表于 2015-6-24 10:22:17 | 显示全部楼层

FF加1以后变为100,这样count变为00,因此电路可以工作
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-5-6 18:27 , Processed in 0.063301 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表