16.FPGA点亮流水灯+Modelsim手动添加仿真

LED灯的通过电流一般在3~20mA;
always块里面顺序执行,always块之间是并行执行;
实例化的输出端口必须是wire型
initial语句只执行一次
#20表示延时20单位时间
always@(*)表示对所有输入变量都敏感
if判断,0,z,x为假
casez,casex
有限状态机(fsm)设计:1.状态空间定义;2.状态跳转;3.下个状态判断;4.各个状态下的动作。

流水灯的v文件代码如下:

module flow_led(
	input	sys_clk50,
	input	rst_n,
	
	output reg [3:0] led
	);

reg [23:0] cnt;

always @ (posedge sys_clk50 or negedge rst_n)
begin
	if(!rst_n)
		cnt<=1'b0;
	else
		if(cnt<24'd10)
			cnt<=cnt+1'b1;
		else
			cnt<=24'd0;
end

always @ (posedge sys_clk50 or negedge rst_n)
begin
	if(!rst_n)
		led<=4'b0001;
	else
		if(cnt==24'd10)
			led<={led[2:0],led[3]};
		else
			led<=led;
end
endmodule

激励文件如下:

`timescale 1 ns/ 1 ns
module flow_led_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg rst_n;
reg sys_clk50;
// wires                                               
wire [3:0]  led;

// assign statements (if any)                          
flow_led i1 (
// port map - connection between master ports and signals/registers   
	.led(led),
	.rst_n(rst_n),
	.sys_clk50(sys_clk50)
);
initial                                                
begin                                                  
// code that executes only once                        
// insert code here --> begin                          
    sys_clk50=1'b0;
	rst_n=1'b0;
	#100 rst_n=1'b1;
	#1000 $stop;
// --> end                                             
$display("Running testbench");                       
end                                                    

always #10 sys_clk50=~sys_clk50;                                                    
endmodule

1.打开Modelsim,新建工程

2.添加v文件和vt文件

complie一下。

simulate→start simulate→work下找到激励文件

记得取消优化。然后就可以等着仿真了

发布了51 篇原创文章 · 获赞 1 · 访问量 623

猜你喜欢

转载自blog.csdn.net/weixin_44737922/article/details/105121308