FPGA实验报告.docx
- 文档编号:5957160
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:26
- 大小:553.26KB
FPGA实验报告.docx
《FPGA实验报告.docx》由会员分享,可在线阅读,更多相关《FPGA实验报告.docx(26页珍藏版)》请在冰豆网上搜索。
FPGA实验报告
FPGA系统设计实验报告
学院:
计算机与通信工程学院
班级:
电信10
学号:
41050204
姓名:
陈小慧
指导教师:
2013年3月27日
FPGA系统设计实验报告
陈小慧
计算机与通信工程学院,电信10,学号:
41050204
【摘要】本文第一部分主要介绍了FPGA;第二部分为实验的内容和结果;第三部分为根据实验二设计的拓展实验;最后部分为实验报告总结。
【关键字】FPGA;SOPC;20nm
1引言
FPGA自1984年Xilinx公司发明以来,逐渐一起全球集成电路格局的变化。
从一开始仅仅实现粘合逻辑到后来的数字信号处理以及目前的系统级解决方案,FPGA不断蚕食着微处理器、DSP以及ASIC的市场,成为目前发展最为迅猛的热门技术之一。
本文便在高校学习的基础上,简单介绍了一些FPGA的概念和应用,并在完成实验的基础上写了实验的过程和总结。
2FPGA简介
2.1FPGA的概述
单片机可以理解为集成在单一芯片上的微型计算机系统,麻雀虽小可是五脏俱全,也有运算器、控制器、存储器、总线及输入输出设备,采用也是存储程序执行的方式,对单片机的编程就是对其中的ROM写入程序,在加电后ROM中的程序会像计算机内存中的程序一样得到逐条的执行。
当今的单片机还集成了A/D、D/A转换,并串口等多种与外界进行数据交换的手段。
单片机计算速度和性能有限,但在一些基本控制上搓绰绰有余。
FPGA则是操控层次更低,所以自由度更大的芯片,对FPGA的编程在编译后是转化为FPGA内的连线表,相当于FPGA内提供了大量的与非门、或非门、触发器(可以用与非门形成吧)等基本数字器件,编程决定了有多少器件被使用以及它们之间的连接。
只要FPGA规模够大,这些数字器件理论上能形成一切数字系统,包括单片机甚至CPU。
FPGA在抗干扰,速度上有很大优势。
2.2FPGA的发展前沿
2.2.1FPGA向SOPC方向发展
System-on-a-Programmable-Chip,即可编程片上系统。
用可编程逻辑技术把整个系统放到一块硅片上,称作SOPC。
可编程片上系统(SOPC)是一种特殊的嵌入式系统:
首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。
SOPC是SOC与FPGA相结合的产物。
SOC(System-On-a-Chip)的定义,是指在一个芯片上包含了计算机引擎、存储器和逻辑电路的集成电路,其在本质上具备作为一个系统的基本要素。
Soc采用单一芯片的形式实现了系统的功能,把系统从原来的整机、电路板缩小到芯片,不仅有利于实现系统的小型化、一体化,减少板级和整机对电路的干扰,同时还有助于降低产品成本。
SOPC可以在一块现成的可编程芯片上提供系统集成。
可编程系统级芯片还具有掩膜ASIC的高集成度及FPGA的低风险、灵活和快速上市的特性[1]。
相关成品为2012年10月中旬,Microsemi公司宣布推出其新一代SmartFusion2SoCFPGA系列产品。
该系列产品是市场上最安全的FPGA;还具备高可靠性、低功耗等优势;应用极其广泛。
2.2.220纳米FPGA时代
台积电28nm良率大幅提升的利好还没被市场彻底消化,FPGA业界双雄已争先恐后地发布20nmFPGA战略,在性能、功耗、集成度等方面均大幅跃升,蚕食ASIC之势将愈演愈烈。
在45nm工艺节点,大量ASIC厂商率先量产;而到了28nm工艺时代,率先量产的7家公司中已有两家是FPGA厂商;在20nm时代,FPGA或将拔得头筹。
在28nm工艺节点上,赛灵思率先推出了统AllProgrammable的7系列FPGA、嵌入ARMcortex-A9的FPGASoC以及采用3D封装技术的Virtex-72000T,赛灵思20nm产品依然是三个产品系列并行发展,分别“进化”成8系列FPGA、第二代FPGASoC和第二代3D封装FPGA。
赛灵思20nm8系列AllProgrammableFPGA将有更快的DSP、BRAM(BlockRAM)、DDR4及收发器,有最高的带宽(100个33Gb/s收发器),可以实现更高的带宽总线和更快的设计收敛。
FPGA另一重要供应商Altera在20nm工艺也导入了三项新技术。
Altera高级副总裁、首席技术官MishaBurich介绍,Altera的20nm工艺FPGA一是可将芯片间的数据传输速度提高至40Gbps,而现行的28nm工艺FPGA为28Gbps。
为了实现高速化,20nm工艺FPGA提高了收发器电路使用的晶体管性能,同时导入了根据在芯片间交换信号的波形来修正信号、改善信号干扰及衰减程度的电路技术。
二是配备浮点运算性能达到5TFLOPS(每秒5万亿次浮点运算)以下的可变精度DSP模块。
为了提高性能,将原来用软件实现的DSP部分运算处理改为了硬件操作。
三是异构3DIC的应用。
Altera的异构20nmFPGA的开发通过全功能高级设计环境得以实现,这一设计环境包括系统集成工具(Qsys)、基于C语言的设计工具(OpenCL)以及DSP开发软件(DSPBuilder)。
MishaBurich表示,下一代高性能设计DSP开发人员不再需要花费数天甚至几个星期的时间来评估FPGADSP解决方案的性能。
通过集成OpenCL和DSP创新技术,采用业界标准设计工具和软件库,Altera产品能够实现5TFLOPS的单精度DSP能力,这将重新树立业界TFLOPS/W硅片效率的标准。
参考文献
[1]刘皖、何道君、谭明,FPGA设计与应用,清华大学出版社,2006年6月第1版,P201
3FPGA实验
实验一LED实验
1.1实验目的
●学习Xilinx公司ISE8.2i软件设计流程;
●熟悉SEED-XDTKXUPV2PRO实验环境;
●了解Verilog语言在FPGA中的使用;
●FPGA管脚与外设的配置;
●了解时钟分频的Verilog实现。
1.2实验内容
●定时时钟设计;
●LED点亮。
1.3实验步骤
1.3.1创建工程
1.双击桌面XilinxISE8.2快捷方式或者选择【开始】/【所有程序】/【XilinxISE8.2i】/【ProjectNavigator】打开ISE工程管理器(ProjectNavigator)。
2.打开ProjectNavigator后,选择File→NewProject,弹出新建工程对话框建立文件名和路径。
器件族类型(DeviceFamily)选择“Virtex2P”,器件型号(Device)选“XC2VP30ff896-7”,综合工具(SynthesisTool)选“XST(VHDL/Verilog)”,仿真器(Simulator)选“ISESimulator”
1.3.2新建Verilog源代码
新工程创建完在【Sources】面板右击,选【NewSource】命令打开新建代码智能向导,输入源代码;
选【AddSource】命令调用以给源代码程序。
如果以有源代码,则选择.v.文件,自动添加到窗口中。
选择【VerilogModule】新建一个Verilog源代码,然后在【Filename】栏中输入文件名称led(区别大小写)。
单击Next按钮进入模块定义页面,这个页面的【PortName】栏中可以输入相应的端口名称(可在程序中定义);。
直接点【Next】按钮进入新建代码总结页面单击【Finish】按钮完成新建代码过程。
ISE将自动打开源代码视图以及设计总结视图,选择源代码视图。
1.3.3编辑Verilog源代码。
编辑led.v源代码成如下形式。
moduleled(led_cona,led_conb,reset,clk,led_data);
inputreset;
inputclk;
outputled_cona;
outputled_conb;
output[7:
0]led_data;
reg[7:
0]led_data;
regclk_1k;
reg[15:
0]cnt_1k;
reg[11:
0]cnt_led;
parameterfreq_1k=16'h3a98;
assignled_cona=0;
assignled_conb=1;
initial
begin
cnt_1k<=0;
clk_1k<=0;
cnt_led<=0;
end
always@(posedgeclk)
begin
if(reset==0)
begin
cnt_1k<=0;
clk_1k<=0;
end
else
if(cnt_1k==freq_1k)
begin
cnt_1k<=0;
clk_1k<=~clk_1k;
end
else
cnt_1k<=cnt_1k+1;
end
always@(posedgeclk_1k)
if(reset==0)
begin
cnt_led<=0;
led_data<='h01;
end
else
begin
case(cnt_led)
'h001:
led_data<='h01;
'h07D:
led_data<='h02;
'h0FA:
led_data<='h04;
'h177:
led_data<='h08;
'h1F4:
led_data<='h10;
'h271:
led_data<='h20;
'h2EE:
led_data<='h40;
'h36B:
led_data<='h80;
'h3EC:
begin
led_data<='hff;
cnt_led<='h000;
end
default:
cnt_led<=cnt_led;
endcase
cnt_led<=cnt_led+1;
end
endmodule
输入完毕保存。
1.3.4综合(Synthesize–XST)
(1)确保源代码【led.v】在【Synthesis/Implementation】模式下
(2)在【Sources】窗口中选择【led】模块,然后在相关的程序窗口【processes】中双击【Synthesize-XST】。
1.3.5添加约束
在【Sources】窗口选中led.v文件,
【Processes】窗口单击【UserConstraints】左边的“+”号展开,双击【AssignPackagePins】,弹出新建一个UCF文件的对话框,点“yes”后就可以打开PACE。
在【DesignObjectList-I/Opins】窗口的【Loc】栏输入连接FPGA的管脚名,在【DeviceArchitecture】窗口放大即可以看清管脚分配。
管脚分配完毕,点击保存。
退出PACE。
在【Sources】窗口选中led.v文件,【Processes】窗口双击【UserConstraints】下的【EditConstrains】即可查看UCF文
本实例的管脚约束文件(*.UCF文件)如下:
NET"clk"LOC="AH15";
NET"led_cona"LOC="R3";
NET"led_conb"LOC="V1";
NET"led_data[0]"LOC="U8";
NET"led_data[1]"LOC="Y2";
NET"led_data[2]"LOC="Y1";
NET"led_data[3]"LOC="V5";
NET"led_data[4]"LOC="V4";
NET"led_data[5]"LOC="U7";
NET"led_data[6]"LOC="U9";
NET"led_data[7]"LOC="W1";
NET"reset"LOC="AH5";
即clk连接FPGA的AH15管脚,led_cona连接FPGA的R3管脚……
1.3.6FPGA的实现和下载配置
Place&Route之后,进入配置FPGA阶段
展开【ImplementDesign】左边的“+”号,自动执行FPGA实现阶段的过程。
双击【GenerateProgramming】生成可下载的*.bit文件展开【Processes】栏的【GenerateProgramming】旁的“+”号,双击【ConfigureDevice】打开iMPACT下载程序。
弹出【iMPACT—WelcometoiMPACT】对画框,选中【ConfiguredevicesusingBoundary—Scan(JTAG)】,单击【FINISH】。
弹出【AssignNewConfigurationFile】对话框,即给器件指定配置文件,其中前两个器件为PROM和CPLD,都选择【Bypass】按钮,最后一个器件为FPGA,选择led.bit文件,选择【Open】按钮,弹出的对话框单击【OK】,弹出一个警告信息,再单击【OK】按钮。
右击最后一个器件,单击【Program…】弹出的对话框单击【OK】,如果下载成功则出现ProgramSucceed。
1.4实验结果
会看到实验箱的LED灯闪烁,证明结果正确。
实验二LED点阵实验
2.1实验目的:
熟悉ISE8.2开发环境,掌握工程的生成方法;
熟悉SEED-XDTKXUPV2Pro实验环境;
了解Verilog语言在FPGA中的使用。
了解定时器的Verilog实现。
2.2实验内容
定时时钟设计;
LED点阵亮点的控制。
2.3实验步骤:
2.3.1创建工程
双击桌面XilinxISE8.2快捷方式或者选择【开始】/【所有程序】/【XilinxISE8.2i】/【ProjectNavigator】打开ISE工程管理器(ProjectNavigator)。
打开ProjectNavigator后,选择File→NewProject,弹出新建工程对话框,选择工程存放的目录单击确定,ProjectName(工程名称)输入工程名lab2。
点击【Next】按钮,弹出器件特性对话框。
器件族类型(DeviceFamily)选择“Virtex2P”,器件型号(Device)选“XC2VP30ff896-7”,综合工具(SynthesisTool)选“XST(VHDL/Verilog)”,仿真器(Simulator)选“ISESimulator”,单击【Next】直到【Finish】。
2.3.2添加源代码
在【Sources】面板右击,选【AddSource】按钮,指向工程存放的目录文件夹下,打开dot.v文件。
在弹出的【AddingSourceFiles…】对话框单击【OK】,
2.3.3综合
双击dot.v打开源代码视图,双击【Synthesize-XST】进行综合。
2.3.4添加约束
本实例的管脚约束文件(UCF文件)如下:
NET"clk"LOC="AH15";
NET"cpld_cona"LOC="R3";
NET"cpld_conb"LOC="V1";
NET"dot_con[0]"LOC="AA3";
NET"dot_con[10]"LOC="R4";
NET"dot_con[11]"LOC="T2";
NET"dot_con[12]"LOC="R7";
NET"dot_con[13]"LOC="P4";
NET"dot_con[14]"LOC="R2";
NET"dot_con[15]"LOC="P5";
NET"dot_con[1]"LOC="AB1";
NET"dot_con[2]"LOC="Y4";
NET"dot_con[3]"LOC="W4";
NET"dot_con[4]"LOC="V8";
NET"dot_con[5]"LOC="W5";
NET"dot_con[6]"LOC="AA1";
NET"dot_con[7]"LOC="AA2";
NET"dot_con[8]"LOC="R6";
NET"dot_con[9]"LOC="U1";
NET"dot_data[0]"LOC="M4";
NET"dot_data[10]"LOC="U7";
NET"dot_data[11]"LOC="V4";
NET"dot_data[12]"LOC="V5";
NET"dot_data[13]"LOC="Y1";
NET"dot_data[14]"LOC="Y2";
NET"dot_data[15]"LOC="U8";
NET"dot_data[1]"LOC="N2";
NET"dot_data[2]"LOC="P9";
NET"dot_data[3]"LOC="L4";
NET"dot_data[4]"LOC="M2";
NET"dot_data[5]"LOC="N5";
NET"dot_data[6]"LOC="L5";
NET"dot_data[7]"LOC="N6";
NET"dot_data[8]"LOC="W1";
NET"dot_data[9]"LOC="U9";
NET"reset"LOC="AH5";
在【Sources】窗口选中dot.v文件,【Processes】窗口单击【UserConstraints】左边的“+”号展开,双击【AssignPackagePins】弹出新建一个UCF文件的对话框,点“yes”后就可以打开PACE。
在【DesignObjectList-I/Opins】窗口的【Loc】栏输入连接FPGA的管脚名,在【DeviceArchitecture】窗口放大即可以看清管脚分配。
管脚分配完毕,点击保存。
退出PACE。
在【Sources】窗口选中dot.v文件,【Processes】窗口双击【UserConstraints】下的【EditConstrains】即可查看*.UCF管脚约束文件。
2.3.5配置下载文件
双击【GenerateProgramming】生成可下载的bit文件。
展开【Processes】栏的【GenerateProgramming】旁的“+”号,双击【ConfigureDevice】打开iMPACT下载程序。
弹出【iMPACT—WelcometoiMPACT】对画框,选中【ConfiguredevicesusingBoundary—Scan(JTAG)】,单击【finsh】。
弹出【AssignNewConfigurationFile】对话框,即给器件指定配置文件,其中前两个器件为PROM和CPLD,都选择【Bypass】按钮,最后一个器件为FPGA,选择dot.bit文件,选择【Open】按钮
弹出的对话框单击【OK】,弹出一个警告信息,单击【OK】按钮。
右击最后一个器件,单击【Program…】右击FPGA,选中Program…弹出的对话框单击【OK】,如果下载成功则出现ProgramSucceed。
2.4实验结果
实验结果可以看到合众达的图标(如图2-1)
图2-1
实验三键盘实验
3.1实验目的:
主模块调用子模块接口程序
了解子模块数码管显示程序显示的特点
了解子模块键盘控制程序的特点
3.2实验内容
时钟分频设计;
键盘数据读取;
数码管点亮;
蜂鸣器驱动。
3.3实验例程介绍
3.3.1例程流程图如图3-1
图3-1
3.3.2例程包含文件
1.main.v:
程序主模块,通过调用各功能模块实现键盘数据的读取、蜂鸣器的驱动以及数码管的显示(主模块包含调用子模块的接口语句,但个子模块程序还未调用)
2.v2_dcm.xaw:
系统输入时钟处理文件,将外部输入时钟(100M)进行10分频
3.CLK_DIV.v:
系统运行时钟分频文件,将系统运行时间进行分频,通过重载提供100K及1K的模块处理时钟
4.KEY_SCAN.v:
键盘读取程序,包含键盘去抖处理
5.DEBOUNCE.v:
键盘去抖延时程序
6.THAN_HEX_LED.v:
数码管点亮程序
7.main.ucf:
FPGA管脚分配程序
3.4实验步骤
3.4.1创建工程
1.双击桌面XilinxISE8.2快捷方式或者选择【开始】/【所有程序】/【XilinxISE8.2i】/【ProjectNavigator】打开ISE工程管理器(ProjectNavigator)。
2.打开ProjectNavigator后,选择File→NewProject,弹出新建工程对话框,在工程路径中单击“…”按钮,选择工程存放的目录单击确定,ProjectName(工程名称)输入工程名lab3。
点击【Next】按钮,弹出器件特性对话框。
器件族类型(DeviceFamily)选择“Virtex2P”,器件型号(Device)选“XC2VP30ff896-7”,综合工具(SynthesisTool)选“XST(VHDL/Verilog)”,仿真器(Simulator)选“ISESimulator”。
单击【Next】直到【Finish】。
3.4.2添加源代码
在【Sources】面板右击,选【AddSource】按钮,指向工程存放的目录文件夹下,打开main.v文件在弹出的【AddingSourceFiles…】对话框单击【OK】,
用【AddSource】命令接着添加【CLK_DIV.v】,【v2_dcm.v】,【THAN_HEX_LED.v】,【KEY_SCAN.v】,【DEBOUNCE.v】文件,方法和添加顶层模块相同。
展开【KEY_SCAN.v】旁的“+”号,展开后会发现此文件关联的文件有“?
”号,继续添加【DEBOUNCE.v】文件。
共添加了五个程序模块.
3.4.3综合
双击main.v打开源代码视图,双击【Synthesize-XST】进行综合。
双击进行综合
3.4.4添加约束
在【Sources】面板右击,选【AddSource】按钮,指向工程存放的目录文件夹下,打开【main.ucf】文件。
弹出的对话框单击【OK】。
3.4.5配置下载文件
双击【GenerateProgramming】生成可下载的bit文件。
如图3-13。
展开【Processes】栏的【GenerateProgramming】旁的“+”号,双击【ConfigureDevice】打开iMPACT下载程序
弹出【iMPACT—WelcometoiMPACT】对画框,选中【ConfiguredevicesusingBoundary—Scan(JTAG)】,单击【FINISH】。
弹出【AssignNewConfiguratio
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 实验 报告