设计流程

  1. 首先对项目要有一个全局的考虑,分析项目需要几个模块构成,确定各个子模块的关系和信号之间 的相互关系,然后确定模块的端口信号有哪些
  2. 根据每个模块的功能并结合芯片、接口的时序手册画 出该模块能正常工作的时序波形图
  3. 根据所画的波形图严格设计代码,保证设计代码的仿真结果要和 所画的波形保持一致
  4. 代码编写完成后对代码进行编译,目的是检查代码中的语法错误。若代码存在语法 错误,对代码进行修改,再次编译,直至通过编译;
  5. 根据 RTL 代码设计合理的 Testbench 进行逻辑仿真(也称为前仿真、功能仿真);
  6. 使用仿真工具进行仿真,并将仿真出来的波形和 画出 的时序波形图进行对比,如果对比有差别则修改代码直至相同;
  7. 绑定管脚后进行分析综合、布局布线,然后下载到硬件板卡中,此时如果硬件板卡 能够正常工作,则说明前期的设计和编写的代码都正确;如果硬件板卡不能够正 常工作,查找并解决问题,反复迭代直至正确实现功能。

功能

通过按键控制一个 led 灯的亮灭,按键未被按下时 led 灯处 于熄灭状态,按键被按下时 led 灯处于点亮状态

模块设计

在这一部分,需要根据功能设计模块的结构和分析端口信号。

 点亮LED灯,需要两个端口,一个端口负责接在按键上,接收输入信号,一个负责接在LED上,输出信号到LED等上。

波形设计

框图结构和端口信号设计完毕后就需要设计框图结构下模块功能的实现,也就是输入 和输出之间怎么样的影响关系。输入和输出满足信号与系统的关系,这种关系是一种时序 的、逻辑的关系,即既有时间上的关系又有逻辑上的关系。

新建工程

1 是这个新建的工程的位置  2 是这个工 程的名字  3 是整个工程设计顶层的文件名,这个名字保持和 2 中的命名一 致即可。

1 框是选择使用哪个系列的芯片

2 框是选择该芯片的封装类型

3 框是管脚数量,选择 256;

4 框是速度等级,选择 8

 REL代码的编写

RTL 代码编写出的模块叫 RTL 模块(可综合模块)。RTL 代码能够综合出真实的电路。

module led
(input wire key_in,  //输入按键output wire led_out  //输出控制led灯
);assign led_out=key_in;endmodule

切换到Files ,将文件添加到工程中。

代码的分析和综合

点击如图 9-38 所示的图标进行代码的分析和综合,该步骤的目的是首先检查语法是否 有错,其次是综合器将代码解释为电路的形式。

RTL 视图的查看

打开后的界面如图所示,这就是我们设计的硬件电路结构,可见输入是 key_in,然后 通过一根线连接到输出 led_out

Testbench 的原理

Testbench 是测试脚本.

测试设计电路的整体功能、部分性能是否与预期的目标相符.

编写 Testbench 进行测试的过程如下:

1. 产生模拟激励(输入波形);

2. 将产生的激励加入到被测试模块并观察其输出响应;

3. 将输出响应与期望进行比较,从而判断设计的正确性。

仿真设置

1 框中“Tool name:”栏选择“ModelSim”,“ModelSim”就是独立 的 ModelSim,而“ModelSim-Altera”是安装 QuartusII 时自带的 ModelSim;

2 框中“Format for output netlist:”栏是选择输出网表的语言格式,该网表主要用于后仿真,因为 我们在逻辑设计中往往不做后仿真,所以这里默认即可;

3 框中“Time scale:”栏是选择 输出网表的时间单位,所以也默认即可;

4 框中的“Output direction:”选择输出网表 的位置,这里我们默认即可。

NativeLink 的设置

基于 NativeLink 的设计就是在 QuartusII 中设置好一些参数后直接打开 ModelSim 软件 可以立刻看到仿真的结果

 

1 框“Test bench name:”就是前面“Comple test bench:”框中的名 字,也就是上图中新建的这个 Test Benches 的名字(一般情况下框1 和框2 的名字保持一 致即可);

2 框“Top level module in test bench:”是 Testbench 顶层的名字,这里只有一个 层次那就是图 9-59 所示中的名字 tb_led;

3 是“End simulstion at:”是设置打开 ModelSim 时波形运行多久后停止,如果这里不设置就需要在仿真代码中仿真完毕的地方添加 “$stop”代码暂停仿真,或者在弹出的 ModelSim 界面中按暂停按钮,否则 ModelSim 会一 直运行。我们设置的是 1us,这个时间不长不短刚刚好,即打开 ModelSim 后运行 1us 后波形停止运行,如果所需要观察的波形 1us 时刻之后,可以在 ModelSim 中再设置运行时间后 继续运行;

4 框“File name:”选择 sim 文件夹下的 tb_led.v 文件。都设置好后点击 “Add”将 tb_led.v 文件添加进来。

`timescale  1ns/1nsmodule  tb_led();//********************************************************************//
//****************** Parameter and Internal Signal *******************//
//********************************************************************//
//wire  define
wire    led_out ;//reg   define
reg     key_in  ;//初始化输入信号
initial key_in <= 1'b0;//key_in:产生输入随机数,模拟按键的输入情况
always #10 key_in <= {$random} % 2; /*取模求余数,产生非负随机数0、1每隔10ns产生一次随机数*///********************************************************************//
//**************************** Instantiate ***************************//
//********************************************************************//
//------------- led_inst -------------
led led_inst
(.key_in (key_in ),  //input     key_in.led_out(led_out)   //output    led_out
);endmodule

打开 ModelSim 观察波形

放大镜图标

点击框中第一个按钮即添加参考线

点击第二个按钮即去掉参考线

左下角处的“小锁”即可固定参考线,被固定的参考线显示红色

其中○1 框中的图标是波形复位

○2 框是设置运行一次仿真的时间,根据实际观察波形的需要填写相应的时间。但仿真 的时间越久所需要等待的时间也会越久,所生成的仿真文件也会越大;

○3 框中的第一个图标是运行左边设置的时间值,图中显示的是 100ps,那么点击一次 就运行 100ps,运行完 100ps 后就会自动停止,也可以手动输入其他的时间单位和时间值

3 框中的第二个和第三个图标点击一次后波形会一直运行下去,直到点击第四个和第五个 按钮时才会停止;

○4 框中的图标分别是波形的下降沿定位和上升沿定位,当选中要观察的信号时,再点 击这两个按钮时参考线就可以立刻定位到该信号的下降沿或上升沿,再次点击即跳到下一 个下降沿或上升沿;

○5 框中的第一个和第二个图标分别是波形方大和缩小(波形的放大缩小也可以按住键 盘上的“Ctrl”键同时滚动鼠标滚轮)。第三个图标是全局波形显示。第四个图标作用是 将参考线位置处的波形进行放大。第五个图标的作用是将参考线处的波形移动到波形显示 窗口的最开头处。

引脚约束

仿真结束后即验证了代码设计的正确性,也就是说可以进行上板验证了,但是在上板 之前还需要进行引脚约束,就是根据硬件原理图确定按键和 led 分别与 FPGA 芯片的哪个 引脚对应。

 

 (1) Node Name:RTL 代码中定义的端口名字。

(2) Direction:管脚的输入输出方向。

(3) Location:管脚绑定的位置。

(4) I/O Bank:用于支持对应不同的电平标准,即 VCCIO。每个 Bank 只能有一种电压标 准,一般情况下选择默认值就好。一种颜色下的 I/O 口代表一组 Bank。当管脚的 Location 约束完成以后,I/O Bank 会自动进行填充。

(5) VREF Group:Bank 内部的细分区域,非修改属性,会自动填充。

(6) I/O Standard:对管脚内部的 I/O 进行不同的电平约束。FPGA I/O 的电压由 I/O Bank 上 的 VCC 引入,一个 Bank 上如果引入了 3.3V 的 TTL 电平,那么此时整个 Bank 上输出 3.3V 的 TTL 电平。设置好以后工具可以结合 Current Strength 一起计算功率。如果没 有特殊要求默认即可。 (7) Reserved:这个是对管脚内部的 I/O 逻辑进行约束的,这个约束的是 FPGA 在 I/O 端的 输入输出区域的逻辑。无特殊要求可以为空。

(8) Current Strength:是驱动电流强度,一般选择默认值。如果需要驱动大功率的电路, 可以在 FPGA 外围加驱动电路。

(9) Slew Rate:是电压转换速率,表示单位时间内电压升高的幅值,跟信号跳变时间有 关,一般选择默认值。

(10) Differential Pair:差分管脚。

(11) Filter:通过过滤选项显示指定种类的管脚。

全编译

全编译和分析综合的不同是全编译需要进行布局布线,管脚绑定后就可以对全局进行 布局布线了。

1 框是综合后的资源使用率报告;

2 框是综合后提示的错误警告数,这里没有错误,只有警告和严重警告存在,一共 7 个;

3 框是编译时每一步详细的过程,包括执行每一个部分所使用的具体时间,从上到下 顺序执行,第一个是之前进行过的分析与综合,第二个是布局和布线,第三个是生成程序 文件,第四个是静态时序分析,第五个是写入网表,这 5 个步骤编译后都是自动完成的不 需要进行干涉,如果后期自动完成不能满足需求是需要手动进行设置以实现优化

4 框中从左往右依次是错误、严重警告、警告,只要不出现错误就暂时先不用管,当 警告或者严重警告影响功能时再去分析;

5 框是编译的总进度;

6 框是在编译过程中实时显示的时间,该时间随着工程量对增大而增大,硬件的编译 一次的时间是非常慢的,不像软件那样瞬间就完成了,所以这也是需要进行仿真的原因之 一。

通过 JTAG 将网表下载到开发板

开发板连接 12V 直流电源,USB-Blaster 下载器 JTAG 端连接开发板 JTAG 接口,另一端连接电脑 USB 接口。线路正确连接后,打开开关为板卡上电。

打开下载界面。

1 框是硬件连接设置,当前显示的是“No Hardware” 即 没 有 连 接 到 硬 件 , 我 们 需 要 选 择 连 接 的 硬 件 是 USB-Blaster , 点 击 “ Hardware Setup...”

2 框是选择下载的方式,我 们选择“JTAG”下载模式

3 框是下载的进度表,下载成功后会在框内显示绿色并出现 “100%(Successful)”;

4 框是下载的文件,这里是“led.sof”文件。

当设置完成所有的下载设置后

 未使用管脚的默认设置

在做一个个例子的时候不可能同时全部用上所有 的 FPGA 管脚,而在 Quartus 软件中默认未使用管脚的状态为弱上拉输入,所以未使用到 的管脚上也是有电压的,只是驱动能力很弱,这往往会导致一些不安全的隐患,所以我们 需要将未使用管脚的状态设置为三态输入

 

程序的固化

当你把下载网表的上板断电后再重新上电发现 之前的功能已经不存在了,也就是说下载后的网表消失了.我们使用的这款 FPGA 芯片是基于 SRAM 的结构,即下载后的网表存储在 FPGA 内部的 SRAM 中,我们也知道 SRAM 有掉电易失的特性,这也就是我们为什么掉电 后功能就消失的原因

所以我们要想使网表重新上电后仍然存在就需要将网表存储到片外 的 flash 中,flash 芯片型号为 WinBond 25Q16,存储容量为 16Mbit(2M 字节),采用 SPI 协议和 FPGA 进行通信,可做为 FPGA 的配置芯片

“Programming file type:”栏是选择输出文件的类型,我们选择“JTAG Indirect ConfIguration File(.jic)”

 “Configuration device:”栏是 flash 的型号,我们选择“EPCS16”

“File name:”栏是选择输出.jic 文件的位置

 如图 9-112 所示,点击“Input files to convert”框中的“Flash Loader”后会发现“Add Device...”从不能被选择的情况下可以被选择,然后点击“Add Device...”

 如图 9-113 所示,选择我们使用的 FPGA 芯片所属的型号,在“Device family”框中将 “Cyclone IV E”前的括号勾选上,在“Device name”框中将“EP4CE10”前的括号勾选 上,然后点击“OK”。添加后如图 9-114 所示。

 

 先将“Program/Configure”下的方框打上钩,然后点击“Start”执行 程序的固化。

FPGA 点亮LED灯相关推荐

  1. FPGA——点亮led灯

    文章目录 一.实验环境 二.实验任务 三.实验过程 3.1 编写verliog程序 3.2 引脚配置 四.仿真 4.1 仿真代码 4.2仿真结果 五.实验结果 六.总结 一.实验环境 quartus1 ...

  2. 二、3【FPGA】如何点亮LED灯

    目录 前言 一.开发设计流程 二.使用FPGA点亮LED灯 1.设计规划 项目功能描述: 硬件资源: 模块和端口信号划分: 2.波形图绘制 3.代码编写 创建工程 创建代码文件 编写代码 4.代码编译 ...

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

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

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

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

  5. 和12岁小同志搞创客开发:手撕代码,点亮LED灯

    目录 1.Arduino编程架构 2.点亮LED灯 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_381069 ...

  6. STM32F 103C8T6开发板 点亮LED灯

    每组IO口含下面7个寄存器.7个寄存器可以控制一组GPIO的16个IO口. GPIOx_CRL:端口配置低寄存器 GPIOx_CRH:端口配置高寄存器 GPIOx_IDR:端口输入寄存器 GPIOx_ ...

  7. STC89C52单片机 点亮LED灯

    点亮LED灯 一.什么是LED LED全称为半导体发光二极管,采用半导体材料制成的,以直接将电能转化为光能,电号转换成光信号的发光器件:其特点是功耗低.高亮度.色彩艳丽.坑振动.寿命长(正常发光8-1 ...

  8. Raspberry PI 系列 —— 裸机点亮LED灯

    Raspberry PI 系列 -- 裸机点亮LED灯 背景 近期刚买了Raspberry PI B+,配置执行了官方提供的Raspbian系统,折腾了一周Linux系统,感觉没啥意思,于是就试着想了 ...

  9. 蓝桥杯小白系列之汇编点亮led灯

    蓝桥杯小白系列之汇编点亮led灯 1.源代码 2.逐条分析 (1)ORG 0000H (2)START: 伪指令,编译器可识别,单片机不可识别,可以随便起. (3)蜂鸣器设置 蓝桥板插电以后蜂鸣器常会 ...

最新文章

  1. LeetCode-剑指 Offer 52. 两个链表的第一个公共节点
  2. GIS实用小技巧(三)-CASS怎么添加图例?
  3. 开源开放 | 《大词林》开源 75 万核心实体和围绕核心实体的细粒度概念、关系列表...
  4. Mac下安装caffe(cpu-only)
  5. element table多选表格_关于layui表格obj.update();无法重渲模板引擎问题
  6. Bzoj 3196 Tyvj 1730 二逼平衡树
  7. Java中的静态变量、静态方法问题
  8. java nio oio_(三:NIO系列) Java NIO Channel
  9. 数据化、信息化、数字化和智能化之间联系和区别解析
  10. g120宏的说明书_西门子变频器G120操作说明书
  11. Web项目开发流程 PC端
  12. [转载]MIS专业排名
  13. 一步一步教你做微博用户画像分析:Python微博爬虫+词云生成
  14. 快速入门Flink (7) —— 小白都喜欢看的Flink流处理之DataSources和DataSinks
  15. 基于秃鹰搜索算法的无线传感器网络三维覆盖优化
  16. wifi握手包自动跑包
  17. ★关于人类体质弱化的分析
  18. (初学笔记1)python读多波段遥感影像并存到三维数组中
  19. (PS教程)01-用PS给证件照排版
  20. WordSequence API

热门文章

  1. iphone区别翻新机
  2. 用html做qq会员页面导航,untitledQQ会员页面导航.html
  3. basicdatasource默认_BasicDataSource的配置参数
  4. 弦箭彩票分析软件 v4.03 双色球完全版 官方
  5. 组装服务器机箱,小白想组装一台开mc服务器的服务器主机求配置单
  6. android获取sd卡文件系统,HTML5 FileSystem API Android Chrome访问SD卡
  7. AutoCAD VBA面域操作
  8. 极夜微型计算机拆机,拆解极夜T65M小主机,品质不错、性能也行,家用办公无压力!...
  9. 星际无线服务器,蜗牛星际变身文件存储服务器
  10. 附下载 | 354个数据开发利用机构名单来了