admin管理员组文章数量:1530897
2023年12月30日发(作者:)
实验指导(实验指导(一)
——认识FPGA开发板
一、实验目的
1、了解FPGA开发流程
2、了解Xilinx KC705开发平台
二、实验原理
FPGA是Field Programmable Gate Array的缩写,即现场可编程门阵列。FPGA是在CPLD的基础上发展起来的新型高性能可编程逻辑器件,它一般采用SRAM工艺,也有一些专用器件采用Flash工艺或反熔丝(Anti-Fuse)工艺等。FPGA的集成度很高,其器件密度从数万系统门到数千万系统门不等,可以完成极其复杂的时序与组合逻辑电路功能,适用于高速、高密度的高端数字逻辑电路设计领域。FPGA的基本组成部分有可编程输入/输出单元、基本可编程逻辑单元、嵌入式RAM、丰富的布线资源、底层嵌入功能单元、内嵌专用硬核等。
一般来说,完整的FPGA设计流程包括电路设计与输入、功能仿真、综合优化、综合后仿真、布局布线、布局布线后仿真、板级验证与加载配置调试等主要步骤,如图1所示。
(1) 电路设计与输入。电路设计与输入是指通过某些规范的描述方式,将工程师电路构思输入给EDA工具。常用的设计输入方法有硬件描述语言(HDL)和原理图设计输入方法等。HDL语言中,应用最为广泛的是VHDL和Verilog HDL。
(2)功能仿真。电路设计完成后,要用专用的仿真工具对设计进行
功能仿真,验证电路功能是否符合设计要求。功能仿真有时也被称为前仿真。常用的仿真工具有ModelSim、VCS、g和等。
(3)综合优化。综合优化(Synthesize)是指将HDL语言、原理图等设计输入翻译成由与、或、非门,RAM,触发器等基本逻辑单元组成的逻辑连接(网表),并根据目标与要求(约束条件)优化所生成的网表,输出edf和edn等标准格式的网表文件,供FPGA厂家的布局布线器进行实现。
(4)综合后仿真。综合完成后需要检查综合结果是否与原设计一致,做综合后仿真。在仿真时,把综合生成的标准延时文件反标到综合仿真模型中去,可估计门延时带来的影响。
(5)实现与布局布线。综合结果的本质是一些与、或、非门,触发器,RAM等基本逻辑单元组成的逻辑网表,它与芯片实际的配置情况有较大差距。此时,应该使用FPGA厂商提供的软件工具,根据所选芯片型号,将综合输出的逻辑网表适配到具体FPGA器件上,这个过程叫做实现过程。在实现过程中,最主要的过程就是布局布线。所谓布局(Place)是指将逻辑网表中的硬件原语或者底层单元合理地适配到FPGA内部的固有硬件结构上;所谓布线(Route)是指根据布局的拓扑结构,利用FPGA内部的各种连线资源,合理正确连接各
个元件的过程。
(6)时序仿真与验证。将布局布线的时延信息反标到设计网表中,所进行的仿真就叫时序仿真或布局布线后仿真,简称后仿真。布局布
线后仿真的主要目的在于发现时序违规(Timing Violation),即不满足时序约束条件或者器件固有时序规则(建立时间、保持时间)的情况。
(7)板级仿真与验证。在有些高速设计情况下还需要使用第三方的板极验证工具进行仿真与验证。这些工具通过对设计的IBIS、HSPICE等模型的仿真,能较好地分析高速设计的信号完整性、电磁干扰(EMI)等电路特性等。
(8)对器件下载调试。设计开发的最后步骤是在线调试或者将生成的配置文件写入芯片中进行测试。示波器和逻辑分析仪是逻辑设计的主要测试工具。以上任何仿真或者验证步骤出现问题,就需要根据错误的定位返回到相应的步骤更改或者重新设计。
目前主要的FPGA器件生产厂商有两家,即美国的Altera公司和软件开发平台,其中Altera公司的FPGA产品主要有Cyclone系列和Stratix系列等,软件开发平台为QuartusII,而Xilinx公司的FPGA产品主要有Virtex系列和Spartan系列等,软件开发平台为ISE。
本实验采用的是Xilinx公司的带有Kintex-7 FPGA的KC705开发平台。Xilinx的7系列FPGA包括Artix-7,Kintex-7 和Virtex-7 三个系列。具有超高端连接带宽,逻辑容量和信号完整性,提供低成本,小型尺寸和大容量的要求严格的高性能应用。其中,Kintex-7 FPGA具有较高的性价比,其组成的收发器从600Mbps到最高的6.6 Gbps,达到28.05Gbps。主要用在航空电子、LED背光的平板电视和3D TV、LTE基带、手持超声设备、多模式无线电、Prosumer数码单反照相机和视频IP网关。
图1 FPGA开发流程
Kintex-7 FPGA主要包括以下主要特性:
(1)基于6输入查找表(LUT)技术,可配置为分布式内存的,先进的高性能FPGA逻辑。
(2)36kB双端口RAM块,内置片上数据缓冲的FIFO逻辑。
(3)高性能的Select IO技术,支持高达1866 Mb/s的DDR3接口。
(4)强大的时钟管理瓷砖(CMT),结合锁相环(PLL)和混合模式时钟管理器(MMCM),用于实现高精度和低抖动。
(5)低成本,线焊接,无盖倒装芯片,高信号完整性,倒装芯片封装,可以方便在同一系列产品之间互换。所有型号都具有无铅封装,并具有可选铅封装。
本实验采用的Kintex-7 FPGA的KC705评估板提供了一个硬件环境,用于Kintex-7 XC7K325T-2FFG900C FPGA的设计开发和评估,KC705开发平台如图2所示。
图2 KC705开发平台
从图中可以看出 KC705板提供了许多嵌入式处理系统的共同特性,开发板资源介绍如表1所示。
表1 KC705资源介绍
模块号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
描述
Kintex-7FPGA(风扇下面)
DDR模块
BPI flash存储器
SPI flash存储器
SD卡接口
USB JTAG接口
系统时钟源
用户时钟源
SMA时钟输入
GTX时钟输入
Jitter Attenuated Clock
GTX收发器
PCI插槽
SFP连接器
以太网芯片
GTX收发器时钟源
USB转UART芯片
HDMI接口
LCD显示屏
I2C总线切换开关
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
以太网指示灯
用户GPIO LED灯
用户 GPIO 按键
用户DIP切换开关
旋转按钮
GPIO SMA连接器
电源开关
FPGA下载按钮
Flash配置开关
HPC连接器
LPC连接器
电源管理
XADC模块
JTAG接口
PMBus 连接
12V电压输入
CPU复位按钮
为了了解并掌握FPGA开发流程,本实验在KC705平台设计设计一个分频计数的实验,用FPGA内部逻辑控制LED灯的亮灭。KC705平台自带的8个LED灯原理图如图3所示,当GPIO输入端为高电平时,二极管导通,灯变亮。当输入端为低电平时,二极管截至,灯变暗。本实验通过Verilog代码进行计数分频,控制GPIO_LED_0的周期性变化。
图3 KC705平台LED灯原理图
在Verilog代码设计中,把分频输出信号与GPIO_LED_0管脚相连,大家就可以感受到分频产生的效果了。在代码里,使用的200M的差分时钟,一个周期是5ns,在代码里24位计数器cnt进行循环计数,一个周期有224个时钟周期,大约是80ms,所以LED0以80ms为周期变化。
三、实验步骤
a) 打开ISE软件,新建工程,如图4所示
图4 新建ISE工程
然后输入工程名称和路径,其余选择默认选项,点击finish,如图5所示。
图5 输入工程名称和路径
b) 新建工程结束之后,右击新建的工程名称,选择add new
source,可以向工程中添加源文件,在这里选择verilog module,在左侧对话框输入文件名称和路径,如图6所示
图6 添加verilog源文件
回到设计页面,可以发现在工程下面多了一个.v文件,点开文件,输入下面代码
module clk_div(clk_p,clk_n,rst,clk_div);
input clk_p,rst;
input clk_n;
output clk_div;
reg clk_div;
reg[23:0] count;
wire clk;
always @ (posedge clk)
if(rst)
begin
count <= 1'b0;
clk_div <= 1'b0;
end
else
if ( count==24'hffffff)
begin
count <= count + 1'b1;
end
else
begin
count <= 1'b0;
clk_div <= ~clk_div;
end
//差分时钟例化原语
IBUFDS UUT_IBUFG(.I(clk_p),
.IB(clk_n),
.O(clk));
endmodule
代码输入完成之后对代码进行综合,双击Synthesize-XST,综合成功后会显示对号或感叹号,如图7所示。如果是感叹号,代表有警告,可右击Synthesize-XST查看综合报告,对这里出现的警告可以忽略。
图7 代码综合成功
c) 为了使我们的代码与硬件映射,还需要进行管脚约束,管脚约束文件格式为ucf,与添加verilog module文件相同的方法,添加一个ucf文件,不同的是在图8的左侧界面中选择Implementation
Consraints File。
图8 添加ucf文件
回到设计界面,开始编辑ucf文件,打开KC705的datasheet,我们可以找到要使用的LED0与FPGA管脚AB8相连,如图9所示
图9 LED0与FPGA管脚对应关系
同样的方法,再对时钟和复位信号进行配置。时钟选用200M的system clock source,复位信号选用SW3,确定了管脚对应关系之后,开始编辑ucf文件,输入下列内容,其中IOSTANDARD为电压约束,在KC705的datasheet中可以找到。
NET "clk_p" LOC=AD12 |IOSTANDARD=LVDS; //200M
NET "clk_n" LOC=AD11 |IOSTANDARD=LVDS; //200M
NET "rst" LOC=AG5 |IOSTANDARD=LVCMOS15;//sw3
NET "clk_div" LOC=AB8 |IOSTANDARD=LVCMOS15;//LED0
d) 以上工作做完之后,就要对代码进行布局布线,生成可下载的比特流,如图10所示,双击Generate Programming File。
e) 上面步骤完成之后,开始将生成的比特流下载到FPGA板,如图11所示,连接开发板与电脑
图11 连接FPGA与电脑
点击configure target device,打开Impact,如图12所示
图12 打开iMPACT软件
点击箭头所示按钮,出现图13界面,点击OK
图13 扫描设备
如图14所示,软件识别出所连接设备,点击OK
图14 设别设备
双击设备,找到生成的比特流,出现图15对话框选择no
图15 生成PROM
然后选择program,将比特流下载到FPGA板,下载成功后出现program successed标志,如图16所示
图16 下载比特流成功
f) 观察实验结果。按下SW3,发现LED0是灭的,然后它会由暗到明周期性的变化,如图17,18所示
图17 LED0变亮
图18 LED0变暗
四、思考题
1. 本实验中代码实现的是偶数分频,试编写基数分频,如3分频代码。
2. 本实验中把比特流下载到FPGA开发板是通过USB接口,除了USB之外还有哪些下载方式?
版权声明:本文标题:实验一fpga 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1703901755a77075.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论