Design
代码中的计数器设置是因为我的开发板的时钟是100MHZ的,也就是1秒完成了100_000_000次时钟信号,所以我设置计数器为100_000_000次。
也就是说,我让流水灯的变化周期为1 s。
counter == 32'd100_000_000
代码
timescale 1ns / 1ps
module flow_led(
clk,
reset,
led
);
input clk;
input reset;
output [7:0] led;
reg [7:0] led;
reg [31:0] counter;
reg [1:0] state;
always @(posedge clk or negedge reset)
begin
if(!reset)
begin
counter
</code></pre>
<p>Simulation</p>
<p>若在波形仿真中,我们想让与模拟的时钟信号也是100MHZ,让流水灯的周期也为1s,那样的话仿真是跑不完的。</p>
<p>所以我们先修改刚刚的计数周期:</p>
<p><code>counter == 32'd1_000_000</code></p>
<p>仿真中让时钟周期为1000 ns</p>
<p><code>parameter T=1000;</code></p>
<p>这样就可以很轻松的看到流水灯全周期的波形图了。</p>
<h3>代码</h3>
<pre><code class="language-verilog">
1ns/1ns
module sim_dev1();
parameter T=1000;
reg clk;
reg reset;
wire [7:0] led;
initial
begin
clk=1'b0;
reset=1'b0;
#(T+1) reset=1'b1;
end
always #(T/2) clk=~clk;
flow_led u1(
.clk(clk),
.reset(reset),
.led(led)
);
endmodule
波形图
参考资料
Original: https://www.cnblogs.com/Az1r/p/16857029.html
Author: 江水为竭
Title: Vivado_8位流水灯
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/685117/
转载文章受原作者版权保护。转载请注明原作者出处!