北京理工大学FPGA作业.docx
《北京理工大学FPGA作业.docx》由会员分享,可在线阅读,更多相关《北京理工大学FPGA作业.docx(18页珍藏版)》请在冰豆网上搜索。
![北京理工大学FPGA作业.docx](https://file1.bdocx.com/fileroot1/2023-1/26/65964151-6a99-4621-bcf0-f22c2eb00a56/65964151-6a99-4621-bcf0-f22c2eb00a561.gif)
北京理工大学FPGA作业
一、回答问题(每题6分,共60分)
1、简述可编程器件的发展历程及各阶段的特点。
a、可编程只读存储器PROM
特点:
它是由固定连接的“与”阵列和可编程的“或”阵列组成。
由于与阵列是固定的,不需编程,灵活性较差。
大多数逻辑函数不需要使用输入的全部可能组合,这就使得PROM的与阵列不能充分利用,造成浪费。
为了增大芯片的容量,与阵列可以做的很大,但阵列愈大,开关延迟时间越长,速度较慢。
b、可编程逻辑阵列PLA
特点:
PLA中包含一个可编程连接的“与”矩阵和一个可编程连接的“或”矩阵,为了减小阵列规模,提高器件速度,与阵列不采用全译码式,与门个数小于2n。
PLA器件除了实现组合逻辑外,还可实现时序逻辑。
PLA器件对于逻辑功能的处理比较灵活,但处理逻辑功能较简单的电路时比较浪费资源,相应的编程工具花费也较大。
c、可编程阵列逻辑PAL
特点:
PAL对PLA的可编程结构进行了进一步的简化,与阵列可编程,或阵列固定。
PAL器件具有灵活的设计功能,与PLA器件相比,体积小,功耗低,速度快,有防止复制该逻辑的保密熔丝,可实现产品的加密功能。
缺点是PAL器件采用的熔丝工艺,一旦编程,无法改写,而且不同的输出结构需要选用不同型号的PAL器件。
d、通用阵列逻辑GAL
特点:
GAL是基本PAL结构的增强型器件,具有与PAL器件相同的基本结构形式,但是编程方式不同。
GAL有如下优点:
采用CMOS的浮栅工艺,采用了一种可编程输出逻辑宏单元OLMC。
e、复杂可编程逻辑器件CPLD
特点:
是由多个类似PAL的功能块组成,具有很长的固定于芯片上的布线资源,通过位于中心的互连矩阵连接在一起。
CPLD采用的是多路开关的互连方式即集总总线方式,因而具有较大的时间可预测性。
总线上任意一对输入端与输出端之间的延时相等。
编程工艺采用浮栅存储电荷的方法保存编程数据,因此在断电时,存储的数据是不丢失的。
CPLD的优点有不采用分段互连方式、有较大的时间可预测性、具有很宽的输入结构、具有ISP性能。
缺点有功耗大、集成度小。
f、现场可编程门阵列FPGA
特点:
FPGA由逻辑功能块排列成阵列组成,并由可编程的内部连线连接这些逻辑功能块来实现不同的设计。
具有更高密度,更复杂的布线结构和逻辑实现。
基本特点如下:
规模越来越大,随着VLSI工艺的不断提高,FPGA芯片的规模越来越大,达到上千万门级的规模,芯片的规模越大,所能实现的功能就越强,同时也更适于实现片上系统(SoC);开发过程投资小,FPGA芯片在出厂之前都做过百分之百的测试,而且FPGA设计灵活,发现错误时可直接更改设计,减少了投片风险,节省了许多潜在的花费。
所以不但许多复杂系统使用FPGA完成,甚至设计ASIC也要把实现FPGA功能样机作为必需的步骤;FPGA一般可以反复地编程、擦除在不改变外围电路的情况下,设计不同片内逻辑就能实现不同的电路功能。
所以,用FPGA试制功能样机,能以最快的速度占领市场。
甚至在有些领域,因为相关标准协议发展太快,设计ASIC可能跟不上技术的更新,只能用FPGA完成系统的研制与开发;保密性能在某些场合下,根据要求选用防止反向技术的FPGA,能很好地保护系统的安全性和设计者的知识产权;良好的IP核支持以ARM、PowerPC、Nios和MicroBlaze为代表的RISC处理器软硬IP核、各种标准外设软硬IP核和实现通信、数字信号处理功能的IP核极大地加强了系统功能,实现真正的可编程片上系统;FPGA开发工具种类繁多、智能化高、功能强大,可以完成从输入、综合、实现到配置芯片等一系列功能,还有很多工具可以完成对设计的仿真、优化、约束、在线调试等功能。
2、FPGA在ASIC分类表中属于哪一个分支?
阐述FPGA的定义,它是如何分类的?
它的内部结构由几部分组成?
每部分的作用是什么?
FPGA属于ASIC中的半定制电路。
FPGA的定义是现场可编程门阵列。
FPGA是一种新型的高密度PLD,采用CMOS-SRAM工艺制作。
FPGA的结构与门阵列PLD不同,其内部由许多独立的可编程逻辑模块组成,逻辑块之间可以灵活的相互连接。
按编程的方式和逻辑功能的类型主要有三种FPGA器件:
SRAM-查找表类型FPGA、反熔丝的多路开关类型FPGA、基于Flash的FPGA。
按逻辑功能块的大小分类,可编程逻辑块是FPGA的基本逻辑构造单元,按照逻辑功能块的大小不同,可将FPGA分为细粒度结构和粗粒度结构两类。
按互连结构分类,根据FPGA内部的连线结构不同,可将其分为分段互连型和连续互连型两类。
按编程特性分类,根据采用的开关元件的不同,FPGA可分为一次编程型和可重复编程型两类。
FPGA的内部结构分为三个部分:
可编程逻辑功能块,可编程输入/输出块和可编程内部互连资源。
可编程逻辑功能块,多个逻辑功能块通常规则地排成一个阵列结构,分布于整个芯片;可编程输入/输出块,完成芯片内部逻辑与外部管脚之间的接口,围绕在逻辑单元阵列四周;可编程内部互连资源,包括各种长度的连线线段和一些可编程连接开关。
用户可以通过编程决定每个单元的功能以及它们的互连关系,从而实现所需的逻辑功能。
3、FPGA或CPLD的设计流程包括哪些步骤?
简述每个步骤的作用。
设计准备:
进行方案论证、系统设计和器件选择等准备工作;
设计输入:
将所设计的系统或电路以开发软件要求的某种形式表现出来并送入计算机;
功能仿真:
用户设计的电路必须在编译之前进行逻辑功能验证;
设计处理:
编译软件将设计输入文件进行逻辑化简、综合优化和适配,最后产生编程用的编程文件;
时序仿真:
检查和消除竞争冒险等是非常有必要的;
器件编程和测试:
产生可供器件使用的数据文件;
测试:
对器件进行校验、加密等工作。
4、简述硬件IP模块、软件IP模块和固件IP模块的定义和特点。
硬件IP模块:
完成布局布线和功能验证并将设计映射到IC
硅片的物理版图上,特点是可靠性高,可重用性和灵活性较差。
软件IP模块:
是可综合的寄存器级硬件描述语言模型,特点是包括了仿真类型、测试方法和说明文档。
网络IP模块:
含有布局布线的信息的软件IP模块,特点是避免了用户重新布线所带来的问题。
5、简述如何合理地选择可编程器件。
根据PLD器件以及配置器件的基本性能参数,包括器件名称、封装形式、I/O引脚数目、供电电压等,进行快速、合理地选择。
在可编程器件的选择上,硬件资源是器件选型的重要标准。
硬件资源包括逻辑资源、I/O资源、布线资源、DSP资源、存储器资源、锁相环资源、串行收发器资源和硬核微处理器资源等。
在器件选择上,最好首先做设计方针,对设计消耗的布线资源有一个比较充分的了解后,然后再考虑器件选型是比较理想的。
其次是考虑数字电路的电气接口标准,器件的速度等级,器件的温度等级,器件的封装,以及器件的价格。
6、关于FPGA设计仿真:
1FPGA开发中,是否需要进行仿真验证?
为什么?
有什么个人体会?
FPGA开发中需要进行仿真验证,以便快速找到程序逻辑或语法错误提高设计效率。
在开发时就每写完一个模块是就用modelsim仿真验证,根据modelsim中的错误信息,很快便可定位到错误代码处,极大的缩短了开发周期。
2一般采用怎样的仿真工具和仿真手段?
ModelSim可以说是业界最流行的仿真工具之一,其主要特点是仿真速度快,精度高。
ModelSim支持VHDL、VerilogHDL以及VHDL和VerilogHDL混合编程的仿真。
ModelSim的PC版的仿真速度也很快,甚至和工作站版不相上下。
HDLBencher是一种根据电路设计输入,自动生成测试激励的工具,它可以把工程师从书写测试激励文件的繁重工作中部分解脱出来。
HDLBencher的Xilinx版本可以支持VHDL语言输入、VerilogHDL语言输入和Xilinx原理图输入等3种输入方法。
将这些设计输入导入到HDLBencher中,就能自动生成相应的测试激励文件。
3什么是前仿真和后仿真?
能否根据自身经历,总结一下前仿真和后仿真的特点和不同之处?
前仿真也称为功能仿真,主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟,主要是验证电路与理想情况是否一致。
可综合FPGA代码是用RTL级代码语言描述的,其输入为RTL级代码与Testbench。
后仿真也称为时序仿真或者布局布线后仿真,是指电路已经映射到特定的工艺环境以后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,是否存在时序违规。
其输入文件为从布局布线结果中抽象出来的门级网表、Testbench和扩展名为SDO或SDF的标准时延文件。
SDO或SDF的标准时延文件不仅包含门延迟,还包括实际布线延迟,能较好地反映芯片的实际工作情况。
一般来说后仿真是必选的,检查设计时序与实际的FPGA运行情况是否一致,确保设计的可靠性和稳定性。
选定了器件分配引脚后在做后仿真。
7、如何理解FPGA设计中的时序收敛?
如何加速时序收敛?
时序收敛又称时序闭合,是指通过在逻辑综合工具、布局布线工具中指定时序约束条件已经行综合和布局布线,然后分局静态时序分析的报告,经过优化设计或者修改约束条件后,使设计满足时序约束条件。
通过以下方法加速时序收敛:
a、使用综合工具提供的参数选项,尤其是constraint-driven技术,可以优化设计网表,提高系统性能;
b、为综合工具指定关键路径,综合工具可以提高工作级别,使用更深入的算法,减少关键路径延迟;
c、管脚约束通常在设计早期就要确定下来,以保证电路板的设计同步进行;
d、如果实现后性能目标得到满足则设计完成,否则施加特定路径时序约束;
e、施加multi-cycle,falsepath和关键路径约束,实现工具会优先考虑这些特定路径的约束;
f、通过STA验证和分析时序;
g、使用更高级别的EffortLevel;
h、可以使用Map-timing参数选项针对关键路径进行约束。
8、如何理解FPGA设计中的亚稳态?
如何改善?
在进行FPGA设计时,往往只关心“0”和“1”两种状态。
然而在工程实践中,除了“0”、“1”外还有其他状态,亚稳态就是其中之一。
亚稳态是指触发器或锁存器无法在某个规定时间段内达到一个可确认的状态。
当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。
在亚稳态期间,触发器输出一些中间级电平,甚至可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。
亚稳态是异步数字电路设计中的固有现象,但是由于其偶发性和温度敏感性的特点,在产品前期测试过程中很难发现。
在FPGA设计中,只要不满足内部触发器的建立时间和保持时间要求,就会出现亚稳态。
对于一个全同步设计来说,时钟和数据相位关系固定,所有触发器都由一个时钟信号驱动,虽然在不同点也存在相位差别,但开发工具会通过计算时钟信号线的走线长度来预测传输延时,并通过时钟域内的时钟树综合算法来求得优化的结构,使触发器的建立时间和保持时间满足要求,不出现亚稳态,这也是所有设计规范都推荐采用全同步设计的一个重要原因。
但是,实际的系统一般都不只有一个时钟,而是一个多时钟系统,例如常见的下行链路数据复接设备,一般是有多少路输入就有多少个时钟,因而需要分析其中的异步传输路径并采取缓解措施。
改善措施:
1、状态机如果有异步信号输入,一定要多拍处理异步信号,并且使用安全状态机,任何情况下不可以让状态机挂死在非法状态;2、异步接口不可能做到准确地定时,在预算精度时,必须容忍+/-1拍的延时;3、异步FIFO两个时钟域的地址交互时,使用格雷码计数器并多拍处理,可减低对亚稳态的敏感;4、能用低的频率实现的功能,不要用高的频率。
频域较高时,要用三拍或者更多的触发器来降低亚稳态的危害5、较陡的信号边沿(包括数据和时钟)有利于降低发生亚稳态的概率;6、针对单比特信号异步传输的亚稳态缓解措施,慢时钟域信号进入快时钟域,两者周期相差1倍以上,输入信号从CLK1时钟域进入到CLK2时钟域时可以通过两级触发器级联的方式来缓解亚稳态,两者周期相差1倍以内,采用脉冲扩展同步电路来缓解亚稳态,快时钟域信号进入慢时钟域,采用窄脉冲检测电路来缓解亚稳态;7、针对多比特并行信号异步传输的亚稳态缓解措施 ,在许多应用中,跨时钟域传送的不只是简单的单比特信号,很多时候是并行数据信号的跨时钟域传输。
针对这种应用可以采用异步FIFO或双口RAM来解决;8、针对异步复位过程的亚稳态缓解措施,实际电路中,可以采用异步复位同步释放的方式来缓解复位导致亚稳态的影响。
9、请叙述SoPC的概念及设计方法
SoPC(SystemonaProgrammableChip),即可编程片上系统。
用可编程逻辑技术把整个系统放到一块硅片上,称作SOPC。
可编程片上系统(SOPC)是一种特殊的嵌入式系统:
首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。
在SoPC设计中,一般都含有微处理器,必须有应用程序完成数字计算、信号处理变换、控制决策等功能。
因此,在设计的前期,需要进行软、硬件协同设计,以便确定哪些功能是由硬件完成的,哪些功能是由软件完成的,并且进行适当划分。
在设计的中后期,要进行软硬件协同验证,即把软硬件设计放到一个虚拟的集成环境中进行仿真验证,以便验证硬件的性能是否达到设计目标,软件功能是否实现设计要求。
SoPC的设计方法:
a、建立硬件平台,硬件平台是由一个或多个处理器或外设连接到处理器总线结构的;b、软件平台建立,软件平台是软件驱动和用于建立应用程序的操作系统组成的;c、使用仿真的硬件平台验证:
验证硬件平台的正确功能,设计人员可以建立一个仿真模型,并且在HDL仿真器上运行;d、使用调试的软件验证:
调试嵌入式软件的基本技术是加载设计到所支持的开发板和使用调试工具去调试处理器。
设计人员可以使用指令集仿真器或简化系统仿真器模型运行在主机上来调试设计代码;e、芯片配置:
软件与硬件平台建立完成后,设计人员可以为FPGA建立一个可配置的比特文件。
对于原型设计,当连接主机和芯片时,设计者可以在下载比特流时,将希望运行在嵌入式平台上的软件同时下载。
10、调研Xilinx公司最新一款FPGA器件,详细叙述此款器件的结构、工艺、性能等。
调研FPGA型号:
XilinxArtix-750T
工艺:
产品采用针对低功耗高性能精心优化的28nm工艺技术,能实现出色的生产率;
结构:
10个用户LED,12个连接到Pmod,16AMS输入,200MHzLVCMOS振荡器(系统时钟),256MBDDR3SDRAM,32KBI2CEEPROM,32MBQSPIFlash,4个用于电源监控电路,5个用户按钮开关,512bEEPROM,支持SHA-256认证引擎,6个兼容于Digilent的Pmod™接口,支持48个用户I/O引脚,8个用户DIP开关,双10/100以太网接口,JTAG编程/配置端口,配对适应双倍宽度Pmod,作为差分对布线,支持IEEE1588,USB-UART接口,XilinxPC4和DigilentSMT2,XilinxXC7A50T-1FTG256C。
结构图如下:
性能:
以低功耗、低成本为特色,它Spartan-6速度快30%,功耗低一半,价格降低35%;利用基Virtex系列架构FPGA能够满足成本敏感型、大批量市场的性能要求;利用内置式Gen1x4PCIExpress®技术实现3.75Gpbs串行连接功能;丝焊芯片级BGA封装,实现了小型化和低成本;能满足电池供电的便携式超声波设备的低功耗高性能需求;能满足商用数码相机镜头控制的小型、低功耗要求;能满足军用航空电子和通信设备严格的SWAP-C(大小、重量、功耗和成本)要求;尺寸、重量和功耗特性都特别符合手持式应用的要求,如便携式超声波、数字照相机控制和软件定义无线电。
二、实验部分(40分)
注:
此部分实验的设计语言、设计工具任选,只要能满足设计要求即可。
1、基本逻辑设计练习-分频器(15分)
外部输入频率为1KHz的基准时钟信号,产生一个周期为1秒的时钟信号,产生方法请见下图。
设计要求:
Ø要求设置复位开关。
当按下复位开关时,秒表清零并做好计时准备。
在任何情况下只要按下复位开关,秒表都要无条件地进行复位操作,即使是在计时过程中也要无条件地进行清零操作。
Ø要求设置启/停开关。
当按下启/停开关后,将启动秒表输出,当再按一下启/停开关时,将终止秒表的输出。
Ø要求采用结构化设计风格描述,即先设计一个10分频电路,再用此电路构建秒表电路。
Ø请给出完整程序。
实验报告要求:
要提交:
ØHDL语言源程序
Ø使用ModelSim等仿真工具进行设计仿真,输出结果波形图
Ø使用ISE进行FPGA的综合与实现,给出设计结果分析报告
Ø查看FPGAEditor和Floorplanner实现情况
1、VHDL源程序:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
entityFreq_divis
generic(Modulus:
inPositiverange2toInteger'High:
=5);
Port(Clk_1kHz:
inSTD_LOGIC;
Reset:
inSTD_LOGIC;
en_i:
inSTD_LOGIC;
Clk_1Hz:
outSTD_LOGIC);
endFreq_div;
architectureBehavioralofFreq_divis
componentdiv_10is
generic(n:
integer:
=10);
port(clk:
instd_logic;
Reset:
inSTD_LOGIC;
en_i:
inSTD_LOGIC;
q:
outstd_logic);
endcomponent;
signalclk_100Hz:
std_logic:
='0';
signalclk_10Hz:
std_logic:
='0';
begin
u_clk_100Hz:
div_10
portmap(clk=>Clk_1kHz,
Reset=>Reset,
en_i=>en_i,
q=>clk_100Hz
);
u_clk_10Hz:
div_10
portmap(clk=>clk_100Hz,
Reset=>Reset,
en_i=>en_i,
q=>clk_10Hz
);
u_clk_1Hz:
div_10
portmap(clk=>clk_10Hz,
Reset=>Reset,
en_i=>en_i,
q=>Clk_1Hz
);
endBehavioral;
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
entitydiv_10is
generic(n:
integer:
=10);
port(clk:
instd_logic;
Reset:
inSTD_LOGIC;
en_i:
inSTD_LOGIC;
q:
outstd_logic);
enddiv_10;
architecturebehaveofdiv_10is
signalcount:
integerrangen-1downto0:
=n-1;
begin
process(clk)
begin
ifReset='0'then
q<='0';
elsif(clk'eventandclk='1'andclk'last_value='0')then
ifen_i='1'then
count<=count-1;
ifcount>=n/2then
q<='0';
else
q<='1';
endif;
ifcount<=0then
count<=n-1;
endif;
endif;
endif;
endprocess;
endbehave;
2、输出结果波形图
3、综合结果
4、FPGAEditor实现情况
2、自拟题目(25分)
设计要求:
Ø设计内容可根据自己的兴趣或结合课题任选,难易程度不限,但不应是课堂讲义中的实例。
Ø从FPGA设计工具中(例如ISE中的COREGenerator)选两种以上IP核加入设计中,至少要用到存储IP和FPGA内部时钟管理单元,其他不限。
Ø用HDL建立测试平台(Test-Bench),给出两种仿真测试平台的源程序,其中一种应为TextIO方式。
实验报告要求:
Ø设计概况,包括设计内容描述、设计结构框图、输入输出端口定义。
Ø所调用的IP核的描述。
Ø所用FPGA器件的性能描述(系列、型号、资源等)
ØHDL源程序
ØHDL仿真测试源程序,TextIO的输入输出文件。
Ø仿真结果波形图
Ø综合报告(注:
通过加不同约束条件观察综合结果的不同)
ØFPGA的设计实现(实现结果、资源利用、性能分析、功耗分析等)
Ø个人体会
1、设计概况
FIR滤波器:
有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。
因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。
设计结构框图如下。
2、IP核描述
3、源程序
moduleFirParallel
(
clk,rst_n,
xin,yout
);
inputclk,rst_n;
inputsigned[11:
0]xin;
outputsigned[28:
0]yout;
regsigned[11:
0]xin_reg[15:
0];
reg[3:
0]i,j;
always@(posedgeclkornegedgerst_n)
if(!
rst_n)
begin
for(i=0;i<15;i=i+1)
xin_reg[i+1]<=‘d0;
end
else
begin
for(j=0;j<15;j=j+1)
xin_reg[j+1]<=xin_reg[j];
xin_reg[0]<=xin;
end
regsigned[12:
0]add_reg[7:
0];
always@(posedgeclkornegedgerst_n)
if(!
rst_n)
begin
for(i=0;i<8;i=i+1)
add_reg[i]<=‘d0;
end
else