前言
点亮LED灯就是软件中的hello world!任务:用libero集成开发环境建立一个示例工程,让一个LED以500ms的频率闪烁。
新建工程的主要步骤
- 新建工程,选择芯片的型号
- 新建设计,使用verilog编写点灯模块
- 仿真验证,对编写的点灯模块进行时序仿真,来验证是否满足设计需求
- 综合、管脚分配、布局、布线
- 生成程序文件,链接开发板,使用FlashPro下载器程序到芯片内,观察现象是否和设计的一致
1 新建工程
- 和大多数IDE一样,选择project -> New Project,新建一个工程
- 输入工程名称LED_Blink,选择工程存放的路径,工程名称和路径不要有中文字符和空格,选择源文件的类型verilog或者VHDL
3. 选择芯片型号,选择适合的芯片即可。
4. 选择IO的电平标准,高低电平的电压范围是不同的,这里选择默认的LVTTL
5. 是否创建MSS模块,MSS里有PLL和ARM M3 的使用,以后用到PLL和ARM内核时再添加,然后一直finish下去
到这里工程就创建完了,然后会在存储路径下生成一个和工程名称一样的文件夹。
2 添加设计文件
支持HDL和原理图两种方式来执行
- 创建Verilog文件
创建verilog文件有多种方式,可以直接双击左侧的菜单中的 create design -> create HDL
或者点击 File -> New -> HDL ,这两种方式都可以创建一个Verilog 设计文件,这里选择verilog文件
输入模块的名称: led_driver ,不用添加 v后缀名
led_driver.v:
module led_driver(
//input
input clk, //clk=2MHz
input rst_n, //0=reset
//output
output reg led
);
parameter T_500MS = 999999; //1M
reg [31:0] cnt;
always @ (posedge clk)
begin
if(!rst_n)
cnt <= 32'b0;
else if(cnt >= T_500MS)
cnt <= 32'b0;
else //cnt < T_500MS
cnt <= cnt + 32'b1;
end
always @ (posedge clk)
begin
if(!rst_n)
led <= 1'b1;
else if(cnt >= T_500MS)
led <= ~led;
end
endmodule
可以看到非常简单,定义一个计数器,然后系统时钟为2Mhz = 500ns, 500ms = 1M 个时钟周期
3 仿真验证
- 编写完成后,点击对号语法检查,如果没有错误就可以进行时序仿真了
- 新建Testbench文件,底部切换到 Design Hierarchy选项卡,在led模块上右键选择 create testbench 创建仿真文件,选择HDL格式
给创建的testbench文件 后缀加上_tb ,因为我们的板子外部晶振是2M,所以这里系统时钟周期为500ns,这个也可以在文件中更改
点击ok可以看到,Libero软件生成了一些基本的代码,包括端口定义等等,输入信号的初始化等等,我们只需要添加几行即可
`timescale 1ns/100ps
module led_driver_tb;
parameter SYSCLK_PERIOD = 500;// 2MHZ
reg SYSCLK;
reg NSYSRESET;
wire led; //add output reg
initial
begin
SYSCLK = 1'b0;
NSYSRESET = 1'b0;
end
initial
begin
#(SYSCLK_PERIOD * 10 )
NSYSRESET = 1'b0; //add system reset
#(SYSCLK_PERIOD * 100 )
NSYSRESET = 1'b1; //add system set
end
always @(SYSCLK) //generate system clock
#(SYSCLK_PERIOD / 2.0) SYSCLK <= !SYSCLK;
led_driver led_driver_0 (
// Inputs
.clk(SYSCLK),
.rst_n(NSYSRESET),
// Outputs
.led(led ) //add port
// Inouts
);
endmodule
仿真代码非常简单,输入信号初始化,NSYSRESET在10个时钟周期之后拉低,100个时钟周期之后拉高。
3.1 使用modelsim 进行时序仿真
仿真代码语法检查无误之后,可以进行modelSim自动仿真,在安装Libero时,已经默认安装了ModelSim软件,直接双击simulate,这里要注意选择verify pre-synthesized design
这时候我们就可以看到仿真输出信号了
参考:
https://blog.csdn.net/whik1194/article/details/101714930