点亮LED闪烁

  • 前言
  • 新建工程的主要步骤
    • 1 新建工程
    • 2 添加设计文件
    • 3 仿真验证
      • 3.1 使用modelsim 进行时序仿真

前言

点亮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( //inputinput clk,      //clk=2MHzinput rst_n,    //0=reset//outputoutput reg led
);parameter T_500MS = 999999;   //1Mreg [31:0] cnt;always @ (posedge clk)
beginif(!rst_n)cnt <= 32'b0;else if(cnt >= T_500MS)cnt <= 32'b0;else //cnt < T_500MScnt <= cnt + 32'b1;
endalways @ (posedge clk)
beginif(!rst_n)led <= 1'b1;else if(cnt >= T_500MS)led <= ~led;
endendmodule

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

3 仿真验证

  1. 编写完成后,点击对号语法检查,如果没有错误就可以进行时序仿真了
  2. 新建Testbench文件,底部切换到 Design Hierarchy选项卡,在led模块上右键选择 create testbench 创建仿真文件,选择HDL格式

给创建的testbench文件 后缀加上_tb ,因为我们的板子外部晶振是2M,所以这里系统时钟周期为500ns,这个也可以在文件中更改


点击ok可以看到,Libero软件生成了一些基本的代码,包括端口定义等等,输入信号的初始化等等,我们只需要添加几行即可

`timescale 1ns/100psmodule led_driver_tb;parameter SYSCLK_PERIOD = 500;// 2MHZreg SYSCLK;
reg NSYSRESET;wire led;     //add output reg initial
beginSYSCLK = 1'b0;NSYSRESET = 1'b0;
endinitial
begin#(SYSCLK_PERIOD * 10 )NSYSRESET = 1'b0;  //add system reset #(SYSCLK_PERIOD * 100 )NSYSRESET = 1'b1;   //add system set
endalways @(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

Microsemi Libero SoC 教程2 (点亮LED闪烁)相关推荐

  1. MM32F3273G8P火龙果开发板MindSDK开发教程1 - 点亮LED

    MM32F3273G8P火龙果开发版MindSDK开发教程1-点亮LED 1.登录官网下载对应的MindSDK固件 https://mindsdk.mindmotion.com.cn/,然后注册下载m ...

  2. 【小月电子】安路国产FPGA开发板系统学习教程-LESSON1点亮LED灯

    点亮LED灯例程讲解 若要观看该博客配套的视频教程,可点击此链接 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去其中一些步骤.比如非常简单的项目,我们 ...

  3. 【小月电子】XILINX FPGA开发板(XLOGIC_V1)系统学习教程-LESSON1点亮LED灯

    点亮LED灯例程讲解 若要观看该博客配套的视频教程,可点击此链接 开发板实物图 图1.FPGA设计流程 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去 ...

  4. 基于STM32cubemx的stm32f107vct6代码生成教程,实验一led闪烁

    基于STM32cubemx的stm32f107vct6代码生成教程 一.软件准备 *MATLAB2018a *Keil4/5 *STM32CUBEMX *STM2-MAT/TARGET 4.3.0 ( ...

  5. Microsemi Libero使用技巧6——FPGA全局网络的设置

    文章目录 前言 问题描述 问题分析 FPGA全局布线资源简介 Microsemi FPGA的全局布线资源 全局网络改为普通输入 普通输入上全局网络 总结 推荐阅读 交流群 系列教程: Microsem ...

  6. Microsemi Libero使用技巧8——片上时钟和PLL的使用

    文章目录 A2F200M3F的PLL和片上时钟 M2S010的PLL配置 交流群 系列教程: Microsemi Libero系列教程 以 SmartFusion系列 A2F200M3F和SmartF ...

  7. 【STM32】STM32CubeMX教程二--基本使用(新建工程点亮LED灯)

    前言 在配置好CubeMX之后,就是新建工程的开始了,那么首先我们需要一些准备,本片博客我们会很详细的介绍STM32CubeMx的基本使用和如何创建一个新的工程并且点亮LED灯  面向初学者   如果 ...

  8. 基于Proteus无实物零基础STM32入门自学教程(七)--定时器点亮LED

    简介:本项目为基于STM32F103R6为核心定时器点亮LED工程.在第一个任务里我们点亮LED是使用延时点亮.从这一讲我们开始学习真正的定时器使用方法,而这种方法是最接近实际应用的.实际应用中几乎不 ...

  9. STM32LL库系列教程【二】——点亮LED小灯

    开发板:秉火-霸道V1 芯片:STM32F103ZET6 GPIO: PB0 STM32LL库系列教程--LL库工程配置流程 STM32LL库系列教程[一]--安装CubeMx软件 STM32LL库系 ...

  10. 树莓派4B ubuntu20.04 python点亮LED 教程

    关于如何在ubuntu上配置python控制gpio的环境参见这篇博客 https://blog.csdn.net/ourkix/article/details/113417800 关于GPIO引脚 ...

最新文章

  1. Windows文件操作的直接函数调用
  2. python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据?
  3. post、get的区别
  4. Redis数据类型--字符串类型
  5. LAMP或LNMP一键安装包
  6. [LeetCode]题解(python):068-Text Justification
  7. 深度学习笔记 | 第16讲:语音识别——一份简短的技术综述
  8. Intel MKL 稀疏矩阵求解PARDISO 函数
  9. jquery easyui 封装
  10. Spring入门到精通:第二章 IOC容器(XML方式):7.IOC容器Bean管理XML方式-bean作用域
  11. android连iphone热点超时,苹果手机开热点安卓手机连不了为什么
  12. php输出26个大小写英文字母
  13. 显示杂谈(2)为啥选择gamma2.2
  14. 借鉴-牛人开发的网络搜索工具
  15. 映射报错怎么解决 Ambiguous mapping. Cannot map ‘basicPersonStreamDataController‘ method
  16. 牛客剑指offer:题解(51-60)
  17. 细说 MySQL 创建表的三种方法
  18. SEO代码优化的学习笔记
  19. magento2.3.2 用户支付成功后台没有生成订单 丢单问题处理
  20. Android screenOrientation属性解析

热门文章

  1. [vue3.x]实战问题--Extraneous non-props attributes
  2. 【Linux系列文章】软件包管理
  3. Intellij IDEA 一些让人爱不释手的小技巧
  4. 遗传算法调参 参数设置
  5. mysql左联和全等_Mysql7种join连接及mysql一些知识点-Go语言中文社区
  6. 第4章 Vue全家桶(vue-router+vuex) - 4.23 如何添加商品到购物车中6步骤
  7. 软件测试-按开发阶段划分
  8. 微服务架构开发实战:什么是微服务的熔断机制和熔断的意义
  9. OpenCvSharp工作学习笔记5-图片缩放
  10. 数据预处理阶段“不处理”缺失值的思路