• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

基于Robei:第一个流水灯仿真实验

互联网 diligentman 4周前 (01-31) 12次浏览

文章目录

  • 前言
  • 一、设计文件编写
  • 二、仿真文件编写
  • 三、波形信号查看
  • 总结

前言

       上一期文章分享了testbench(激励)文件的编写,这期文章对上期文章的理论做一个实际上机操作。

一、设计文件编写

首先打开Robei EDA,点击加号,新建一个模块。输入模块名,还有引脚数量。
基于Robei:第一个流水灯仿真实验
       修改引脚名,定义引脚类型,输入设计代码。下面左边为设计输入代码,右边为完整代码。
基于Robei:第一个流水灯仿真实验

完整设计代码:
module flow_led(
	sys_clk,
	sys_rst_n,
	led);

	//---Ports declearation: generated by Robei---
	input sys_clk;
	input sys_rst_n;
	output [3:0] led;

	wire sys_clk;
	wire sys_rst_n;
	reg [3:0] led;

	//----Code starts here: integrated by Robei-----
	//reg define
	reg [23:0] counter;
	
	
	                                                                                                                                                                                                                         
	//计数器对系统时钟计数,计时0.2秒(仿真时,设置为10)
	always @(posedge sys_clk or negedge sys_rst_n) begin
	    if (!sys_rst_n)
	        counter <= 24'd0;
	    else if (counter < 24'd10)
	        counter <= counter + 1'b1;
	    else
	        counter <= 24'd0;
	end
	
	//通过移位寄存器控制IO口的高低电平,从而改变LED的显示状态
	always @(posedge sys_clk or negedge sys_rst_n) begin
	    if (!sys_rst_n)
	        led <= 4'b0001;
	    else if(counter == 24'd10) 
	        led[3:0] <= {led[2:0],led[3]};
	    else
	        led <= led;
	end
	
	
	
endmodule    //flow_led

二、仿真文件编写

       点击加号,新建一个testbench,输入模块名,还有引脚数量。
基于Robei:第一个流水灯仿真实验
        输入激励代码。这里需要注意的是,Robei 的模型有四种类型:“module”,“model”,“testbench” 和“constrain”。 如果你想仿真之后看波形应该将顶层的仿真模块类型设置成“testbench”。同时,testbench 的模块输入端口类型应为“reg”,输出类型应为“wire”。 还有记得在end前面输入$finish。
基于Robei:第一个流水灯仿真实验

完整仿真代码:
`timescale 1ns/1ns 
module flow_led_tb();

	reg sys_clk;
	reg sys_rst_n;
	wire [3:0] led;

	//----Code starts here: integrated by Robei-----
	parameter  T = 20; 
	initial begin
	    sys_clk            = 1'b0;
	    sys_rst_n          = 1'b0;    
	    #10  sys_rst_n  = 1'b1;   
	    #10000  sys_rst_n  = 1'b0;     
	$finish;
	end
	
	
	always #(T/2) sys_clk = ~sys_clk;
	
	
	
	initial begin
		$dumpfile ("D:/a/flow_led/flow_led_tb.vcd");
		$dumpvars;
	end
	//---Module instantiation---
	flow_led flow_led1(
		.sys_clk(sys_clk),
		.sys_rst_n(sys_rst_n),
		.led(led));

endmodule    //flow_led_tb

三、波形信号查看

基于Robei:第一个流水灯仿真实验

        注意:Robei EDA软件没有注册可以看仿真波形,但是,但是仿真的模块数目有限制。

总结

        相比于Modelsim和vivado,robei的仿真方便了很多。因为本人能力有限,如果有错的地方,欢迎指正,谢谢。


程序员灯塔
转载请注明原文链接:基于Robei:第一个流水灯仿真实验
喜欢 (0)