这段程序怎么运行的?
本帖最后由 fpgaw 于 2010-7-12 12:26 编辑module sled (seg , sl , clock); //定义模块结构
output seg; //定义数码管段输出引脚
output sl; //定义数码管选择输出引脚
input clock; //定义输入时钟引脚
reg seg_reg; //定义数码管段输出寄存器
reg sl_reg; //定义数码管选择输出寄存器
reg disp_dat; //定义显示数据寄存器
reg count; //定义计数器寄存器
always @(posedge clock) //定义clock信号下降沿触发
begin
count=count+1; //计数器值加1
end
always
begin
sl_reg=4'b0000;
end
always @(count) //定义显示数据触发事件
begin
disp_dat = count; //显示个位数值
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后,程序还能运行吗?为什么 FF加1以后变为100,这样count变为00,因此电路可以工作 可以运行<br>
计数到FF后会再到0 谢谢版主和loong的回答!<br>
但对于这段程序我直接建了一个tbw波形文件进行仿真,为何不行,一定要写testbench吗? 不一定非写testbench的吧<br>
看看是不是别的地方出了什么问题 为什么我仿真这段程序的时候,老报“# ** Error: (vsim-3601) Iteration limit reached at time 0 ps.<br>
ERROR: VSim failed to simulate annotated testbench”的错误信息,对于其他的时序电路也是这个错误,但组合电路就没有这个错误信息,这是什么原因呢? hehehehehhehehhe 关注啊 fffffffffffffffffffffffffffffffffffffffffff
FF加1以后变为100,这样count变为00,因此电路可以工作
页:
[1]