在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1876|回复: 4

[资料] 【FPGA开源连载】第一章 FPGA开发流程介绍

[复制链接]
发表于 2016-12-19 23:10:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 芯航线跑堂 于 2016-12-21 19:36 编辑


FPGA设计流程介绍






课程目标: 1.了解并学会FPGA开发设计的整体流程


2.[size=1em]设计一个二选一选择器并进行功能仿真、时序仿真以及板级验证

实验平台:芯航线FPGA开发板

图片1.jpg

实验内容:

良好的文件夹设置以及工程管理是一个好的FPGA设计的基础,在学习之初就建立良好的习惯,会少走一些弯路。因此首先在新建的工程文件夹下面,分别建立如图2-1所示的子文件夹。

图片2.jpg

2-1FPGA工程子文件夹

上图中,prj为工程文件存放目录;rtlverilog可综合代码存放目录;testbench为测试文件的存放目录;img为设计相关图片存放目录;doc为设计相关文档存放目录;ip文件夹存放quartusii中生成的ip核文件。

建立工程

打开安装好的QuartusII软件,软件启动界面如图2-2所示

图片3.jpg

2-2Quartus II启动界面

首先在这里单击Creata New Project来新建一个工程向导。界面如图2-3所示。

图片4.jpg

2-3工程路径设置以及命名

第二步,添加已有设计文件。如没有可直接点击Nxet,本次单击Nxet

图片5.jpg

2-4工程中添加相关设计文件

第三步,选择器件。在这里选择芯航线FPGA开发板上的Cyclone IV E系列的EP4CE10F17C8。这里可在右面红色框内可以添加限定条件来减少需要翻看器件的书目。

图片6.jpg

2-5设置工程用器件

第四步,EDA工具的设定。从上依次是综合工具、仿真工具、形式验证工具以及板级验证工具。可根据实际情况自行设定。在这里根据自己安装情况将仿真工具设置为Modelsim-Altera或者Modelsim,语言选择Verilog hdl

图片7.jpg

2-6EDA工具设定

第五步,单击Finish完成工程的建立,至此一个FPGA的工程已经建立完毕。

设计输入

工程建立完成后,需要为工程添加新的设计文件,单击File—New—Verilog HDLFile,或者工具栏中的New,弹出图2-7-2的选择框。此处选择DesignFiles中的Verilog HDL File

图片8.jpg 图片9.jpg

2-7-1新建设计文件图

2-7-2 新建设计文件选择框


新的文件建立完成,输入以下设计,并已led_text.v命名保存到工程所在的rtl文件下。

  

module led_test(a,b,key_in,led_out);

  

  


input a;//输入端口A

  


input b;//输入端口B

  

   

  


input key_in;
//按键输入,实现输入输入通道的选择

  

   

  


output led_out;
//led 控制端口

  

   

  


//key_in == 0 led_out = a

  

   

  


assign led_out =
(key_in ==
0)? a : b;

  

   

  

endmodule

  

分析和综合

单击工具栏中的Start Analysis & Synthesis来进行分析和综合。如在设计过程有错误的地方,在分析和综合后会提示Error或者Warning,需针对不同情况进行修改。芯航线汇总了常见的问题以及解决方式,可以参考用户手册并针对性解决。

图片10.jpg

2-8分析和综合

全编译后可以在RTL Viewer中可以看到图2-9所示的硬件逻辑电路。即为一个二选一选择器,符合预期设计。

图片11.jpg

2-9 RTL Viewer

功能仿真

为了验证以上逻辑设计是否成功,在直接下载到开发板观察之前需编写激励文件,此处再新建一个.v文件输入以下内容。并以led_test_tb.v保存到工程对应的testbench文件夹下。并再次进行分析和综合查看是否存在语法设计错误。

  

`timescale
1ns/1ps

  

  

module led_test_tb;

  

  

//激励信号定义,对应连接到待测试模块的输入端口

  


reg signal_a;

  


reg signal_b;

  


reg signal_c;

  

  

//待检测信号定义,对应连接到待测试模块的输出端口

  


wire led;

  

  

//例化待测试模块

  

    led_test led_test0(

  


.a(signal_a),

  


.b(signal_b),

  


.key_in(signal_c),

  


.led_out(led)

  


);

  

  

//产生激励  

  


initial
begin

  

        signal_a =
0;signal_b =
0;signal_c =
0;

  


#100;//延时100ns

  

        signal_a =
0;signal_b =
0;signal_c =
1;

  


#100;

  

        signal_a =
0;signal_b =
1;signal_c =
0;

  


#100;

  

        signal_a =
0;signal_b =
1;signal_c =
1;

  


#100;

  

        signal_a =
1;signal_b =
0;signal_c =
0;

  


#100;

  

        signal_a =
1;signal_b =
0;signal_c =
1;

  


#100;

  

        signal_a =
1;signal_b =
1;signal_c =
0;

  


#100;

  

        signal_a =
1;signal_b =
1;signal_c =
1;

  


#200;

  


$stop;  

  


end

  

  

endmodule

  

设置仿真脚本

单击标题栏的Assignments—Settings—Simulation,查看仿真工具以及语言是否与之前一致否则进行相应修改。选中Compile test bench单击Test Benches后点击OK。可以看到如图2-10界面。

图片12.jpg

2-10-1仿真脚本设置

图片13.jpg

2-10-2新建激励

点击New会弹出如图2-11所示的testbench设置文件对话框,找到已经编写好的激励文件,单击Add。在Test bench name中填写对应的激励名称。点击OK后回到主界面


图片14.jpg

2-11 测试激励设置

单击Tools—Run Simulation Tool—RTLSimulation或者单击工具栏中的RTL Simulation来进行前仿真也就是常说的功能仿真。

图片15.jpg

2-12开启功能仿真

如出现如图2-13对话框,即提示仿真软件路径报错,可在Tools—Options—EDA Tool Options设置对应的仿真软件的路径即可,如图2-14所示。

图片16.jpg

2-13错误信息示例

图片17.jpg

2-14设置EDA工具的链接

至此即可在仿真软件modelsim中看到如图2-15的波形文件,可以看出符合当key_in等于0led_out等于a,当key_in等于1led_out等于b。即功能仿真通过。

图片18.jpg

2-15 功能仿真波形

如没有出现预期波形可针对具体问题具体分析,芯航线也汇总了一部分常见问题及解决办法,此部分详细内容也可以参考用户手册相关内容。

布局布线

点击QII主界面的StartCompilation,进行综合&布局布线。布局布线过程中如遇出错,针对相应情况具体修改。

图片19.jpg

2-16布局布线

时序仿真

点击Tools—Run Simulation Tool—GateLeval Simulation或者工具栏点击Gate Leval Simulation进行后仿真也就是门级仿真。

图片20.jpg

2-17门级仿真

弹出选择时序模型对话框,可针对相应情况具体选择。此时可选择第一个,慢速工作温度为85摄氏度内核供电1.2V的情况进行仿真。

图片21.jpg

2-18仿真模型设置

Modelsim中可以看到类似图2-19的波形,存在不希望存在的脉冲。且在200ns时的led相对输入信号有一定时间的逻辑延时。

图片22.jpg

2-19时序仿真波形

IO分配以及生成配置文件

在标题栏中Assignments—Pin Planner或者直接单击进行IO分配亦或者编写tcl文件,此处需针对不同板卡进行不同的设置。

图片23.jpg

2-20 PinPlanner

芯航线开发板的引脚分配可以在附赠资料中查到,最终的配置如图2-21所示。

图片24.jpg

2-21分配好的引脚

此处需注意在分配好引脚后,仍需再进行一次全编译才能使管脚分配生效。

配置FPGA下载

单击工具栏中的Programmer,弹出以下对话框,单击Start即可将设计好的逻辑下载到开发板中。

图片25.jpg

2-22Programmer

通过按键以及两根杜邦线控制E8F8接入不同的电压值可以观测到led灯具有不同的亮灭效果。

图片26.jpg

图2-23 下载界面

FPGA也支持多种下载方式,不同下载方式的具体操作可参见开发板附赠中的用户手册。

如在下载过程中出现其他情况,可查询芯航线附赠的用户手册相关章节进行解决,此处不再详述。

至此一个基本的FPGA设计开发流程介绍完毕。


小梅哥

芯航线电子工作室

class2_MUX2.rar

158.97 KB, 下载次数: 2 , 下载积分: 资产 -2 信元, 下载支出 2 信元

第一章_FPGA设计流程介绍.pdf

1.34 MB, 下载次数: 3 , 下载积分: 资产 -2 信元, 下载支出 2 信元

发表于 2016-12-30 22:01:50 | 显示全部楼层
顶顶顶,一直跟着梅哥学习
发表于 2016-12-30 22:03:12 | 显示全部楼层
顶一个
发表于 2016-12-30 22:04:29 | 显示全部楼层
顶起来,大家一起支持一下
 楼主| 发表于 2016-12-31 00:13:12 | 显示全部楼层
感谢大家的支持!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-28 20:50 , Processed in 0.027858 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表