• Microsemi Libero SoC 教程2 (点亮LED闪烁)


    前言

    点亮LED灯就是软件中的hello world!任务:用libero集成开发环境建立一个示例工程,让一个LED以500ms的频率闪烁。

    新建工程的主要步骤

    1. 新建工程,选择芯片的型号
    2. 新建设计,使用verilog编写点灯模块
    3. 仿真验证,对编写的点灯模块进行时序仿真,来验证是否满足设计需求
    4. 综合、管脚分配、布局、布线
    5. 生成程序文件,链接开发板,使用FlashPro下载器程序到芯片内,观察现象是否和设计的一致

    1 新建工程

    1. 和大多数IDE一样,选择project -> New Project,新建一个工程
      在这里插入图片描述
    2. 输入工程名称LED_Blink,选择工程存放的路径,工程名称和路径不要有中文字符和空格,选择源文件的类型verilog或者VHDL

    在这里插入图片描述
    3. 选择芯片型号,选择适合的芯片即可。
    在这里插入图片描述
    4. 选择IO的电平标准,高低电平的电压范围是不同的,这里选择默认的LVTTL

    在这里插入图片描述
    5. 是否创建MSS模块,MSS里有PLL和ARM M3 的使用,以后用到PLL和ARM内核时再添加,然后一直finish下去

    到这里工程就创建完了,然后会在存储路径下生成一个和工程名称一样的文件夹。
    在这里插入图片描述

    2 添加设计文件

    支持HDL和原理图两种方式来执行

    1. 创建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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    可以看到非常简单,定义一个计数器,然后系统时钟为2Mhz = 500ns, 500ms = 1M 个时钟周期

    3 仿真验证

    1. 编写完成后,点击对号语法检查,如果没有错误就可以进行时序仿真了
    2. 新建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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    仿真代码非常简单,输入信号初始化,NSYSRESET在10个时钟周期之后拉低,100个时钟周期之后拉高。

    3.1 使用modelsim 进行时序仿真

    仿真代码语法检查无误之后,可以进行modelSim自动仿真,在安装Libero时,已经默认安装了ModelSim软件,直接双击simulate,这里要注意选择verify pre-synthesized design

    在这里插入图片描述
    这时候我们就可以看到仿真输出信号了
    在这里插入图片描述

    参考:
    https://blog.csdn.net/whik1194/article/details/101714930

  • 相关阅读:
    LeetCode 15. 三数之和
    MySQL——备份和还原
    vim 入门
    智慧办公数据可视化大屏设计(数据可视化)、大数据、数据大屏、办公数据大屏、办公数据
    linux中的inode文件编号和软硬链接
    文盘Rust——起手式,CLI程序 | 京东云技术团队
    Lammps实现纳米孔道内瓦斯驱替过程(包含In文件)
    Vue3 —— 新的组件及一些改变(Fragment、Teleport、Suspense、其他的改变)
    2023年【广东省安全员A证第四批(主要负责人)】考试试卷及广东省安全员A证第四批(主要负责人)模拟考试
    opencv项目_人脸识别_LBPH_python
  • 原文地址:https://blog.csdn.net/qq_30093417/article/details/125605114