东北大学东软信息学院嵌入式系统工程系高级数字系统设计与验证实验指导书1东北大学东软信息学院嵌入式系统工程系高级数字系统设计与验证实验一:实验指导书指导教师:山丹、图雅Ⅰ、实验目的了解基于FPGA的数字系统设计流程,熟悉Spartan-3s1500开发板资源及EDA工具的使用,掌握电路设计、逻辑综合、仿真、布局布线、下载的方法和操作,完成加法器和计数器功能模块的设计与实现。II、实验前的预习及准备工作1、阅读XilinxSpartan-3S1500开发板用户使用指南,将开发板上的所有有效资源列出,并作简要说明,写在预习报告中。2、充分理解加法器和计数器的工作原理。Ⅲ、基于Xilinx-FPGA的数字系统开发流程1、FPGA简介FPGA英文全称是FieldProgrammableGateArray,即现场可编程门阵列,它是在PAL、GAL等可编程器件的基础上进一步发展的产物,具有体系结构和逻辑单元灵活、集成度高以及适用范围宽的特点,并且兼容了简单PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。与ASIC(ApplicationSpecificIC)相比,它具有开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品原型设计和产品生产(一般在10000件以下)之中。同一片FPGA通过不同编程数据可以产生不同的电路功能。FPGA在通信、数据处理、网络、仪器、工业控制、军事和航空航天等领域得到了广泛应用,随着功耗和成本的进一步降低,FPGA还将进入更多应用领域。简化的FPGA基本由6部分组成:可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核。2东北大学东软信息学院嵌入式系统工程系目前FPGA的种类很多,有XILINX的Spartan和Virtex系列、TI公司的TPC系列、ALTERA公司的全系列等。全球第一片FPGA是由XILINX(赛灵思)公司在上个世纪80年代推出的,紧接着ALTERA公司也推出了自己的FPGA。不同公司生产的FPGA在内部连线结构、可编程逻辑模块规模上有所不同,使用时所使用的软件开发平台也不同,用户在使用的时候要加以区别。2、基于FPGA数字系统开发流程简介在设计之初,FPGA设计同ASIC设计一样都要进行规划和预算,要对主要FPGA芯片的选取,工作时间,程序占芯片面积等进行预测。在规划完成后将设计输入PC。在进行设计输入时主要用HDL语言或者原理图进行输入,同时可以ISE所带的结构向导和核生成器进行辅助设计。无论用什么方法设计FPGA,最后都要生成EDIF网表,此时需要综合工具的支持。本论文使用FPGA设计工具是XILINX公司的ISE,它是一个FPGA设计的平台,其中综合器为XST。当网表完成后,就进入实现的阶段。实现阶段包括转化,映射,布局布线三个步骤。转化指将多个设计文件合并为一个网表。映射指将网表中的逻辑符号组装到物理元件中。可理解为将逻辑门映射成PFGA中的基本可编程逻辑单元。布局布线指将元件放置到器件中,并将它们连接起来,同时提取出时序数据并生成各种报告。在实现完成后,使用者会得到报告,时序仿真网表,平面布局文件,FPGA编辑器文件等。图1FPGA设计流程3、Xilinx公司Spartan-3s1500开发板3东北大学东软信息学院嵌入式系统工程系请参见XilinxSpartan-3S1500开发板用户使用指南。Ⅳ、加法器设计445ABA+B1、全加器ForSumForCarryOut4ab0001111000101cin11010ab0001111000010cin10111ABCiS•••C0ABCi全加器的RTL代码如下:modulefull_add(A_in,B_in,C_in,S_out,C_out);inputA_in,B_in,C_in;outputS_out,C_out;assignS_out=A_in^B_in^C_in;assignC_out=(A_in&B_in)|(A_in&C_in)|(B_in&C_in);endmodule2、串行进位加法器的RTL级模型东北大学东软信息学院嵌入式系统工程系ABCiSCoABCiSCoABCiSCoABCiSCo54401234012301233、利用RTL级描述完成基于FPGA的4位串行进位加法器的设计与实现。1)创建工程首先创建一个工程目录,目录名称为“Adder”。启动ISE工程管理器,选择“FILE/NewProject”选项,弹出新建工程对话框,在工程名称中输入“adder4_ripple”作为工程名。单击工程路径按钮,将工程指定到目录“Adder”。单击Next,在新打开的窗口中,将“ProjectCategory”设为“All”,“Family”设为“Spartan3”,“Device”设为“XC3S1500”,“Package”设为“FG676”,“Speed”设为“-5”,“Top-LevelSourceType”设为“HDL”,“SynthesisTool”设为“XST(VHDL/Verilog)”,“Simulator”设为“ISESimulator”。连续单击Next,最后单击finish,完成工程创建。2)设计输入双击“Processes”窗口中的“CreateNewSource”,资源类型选择“VerilogModule”,文件名为“adder4_ripple”,单击Next,在Verilog源代码辅助模板中填入输入、输出信号。单击Next,确认资源信息,然后单击Finish,在HDL编辑器中编写代码并保存。3)功能仿真双击“Processes”窗口中的“CreateNewSource”,资源类型选择“VerilogTestFixture”,文件名为“adder4_ripple_test”,单击Next,在Verilog源代码辅助模板中添加TestBench信息并保存。在“Sourcesfor”中选择“BehavioralSimulator”,在“Sources”中选择测试文件,在“Processes”中,双击“SimulateBehavioralModel”,此时可以看到仿真波形。5东北大学东软信息学院嵌入式系统工程系4)综合在“Sources”窗口中,单击“adder4_ripple”,在“Processes”窗口中,右键单击“Synthesize–XST”,选择“Properties”设置综合属性。本设计不改变默认的综合属性,直接点击OK即可。双击“Synthesize–XST”进行综合。综合后,双击“ViewSynthesisReport”查看综合报告,并记录LUT数量和关键路径的长度。双击“ViewTechnologySchematic”查看电路原理图。5)添加约束双击“Processes”窗口中的“CreateNewSource”,资源类型选择“ImplementationConstraintsFile”,文件名为“adder4_constraints”,单击Next、Finish完成约束文件的创建。在“Sources”中选择约束文件,在“Processes”窗口中,双击“CreateTimingConstrains”,在“ConstraintsFileEditor”中编辑约束条件。由于本实验是纯组合电路的综合,所以不需要添加复杂的约束条件,直接关闭窗口就可以。在“Processes”窗口中,双击“AssignPackagePins”,按下表所示添加FPGA管脚约束并保存。表1I/O名I/O类型管脚使用资源说明a_in[0]InputAB26按钮S3按钮按下为高电平a_in[1]InputAC26按钮S4按钮按下为高电平a_in[2]InputAB24按钮S5按钮按下为高电平a_in[3]InputAB25按钮S6按钮按下为高电平b_in[0]InputV21SW4向上搬动为高电平b_in[1]InputV20SW3向上搬动为高电平b_in[2]InputAA24SW2向上搬动为高电平b_in[3]InputAA23SW1向上搬动为高电平sum_out[0]OutputAD25D8当FPGA输出低电平,LED灯被点亮sum_out[1]OutputAB21D9当FPGA输出低电平,LED灯被点亮sum_out[2]OutputAC21D10当FPGA输出低电平,LED灯被点亮sum_out[3]OutputAD21D11当FPGA输出低电平,LED灯被点亮c_outOutputY18D12当FPGA输出低电平,LED灯被点亮6)实现在“Sources”窗口中,单击“adder4_ripple”,在“Processes”窗口中,双击“ImplementDesign”完成设计的布线。7)布线后仿真6东北大学东软信息学院嵌入式系统工程系在“Sourcesfor”中选择“Post-RouteSimulator”。在“Sources”窗口中,单击“adder4_ripple_test”,在“Processes”窗口中,双击“SimulatePost-Place&RouteModel”,进行布线后仿真。8)生成配置文件与配置FPGA在“Sourcesfor”中选择“Synthesis/Implement”。在“Processes”窗口中,双击“GenerateProgrammingFile/GeneratePROM,ACE,orJATGFile”。在打开的窗口中直接点击“Finish”,系统自动进行设备检测,检测成功后将弹出“AssignNewConfigurationFile”窗口,浏览到工程所在的目录,选择要下载的“.bit”文件,点击“Open”。在“iMPACT”窗口中选择xc3s1500芯片,此时芯片应显示为绿色。右击该芯片图表,在菜单中选择“Program…”进行下载,下载成功后系统出现蓝色“Success”提示。9)下载成功后,输入下表中的数值,并记录预算结果。表2加数1加数2和110110111111001100001001100001114、利用RTL级描述完成基于FPGA的4位超前进位加法器的设计与实现。除RTL代码与串行进位加法器不同外,其实验过程与之相同。moduleadder_4_lookahead(a_in,b_in,sum_out,c_out);input[3:0]a_in,b_in;output[3:0]sum_out;outputc_out;wire[3:0]p,g;wire[3:0]c;assignp=a_in|b_in;assigng=a_in&b_in;assignc[0]=1'b0;assignc[1]=g[0];assignc[2]=g[1]|(p[1]&g[0]);assignc[3]=g[2]|(p[2]&(g[1]|p[1]&g[0]));7东北大学东软信息学院嵌入式系统工程系assignc_out=g[3]|(p[3]&g[2]|(p[2]&(g[1]|p[1]&g[0])));assignsum_out=a_in^b_in^c;endmodule5、比较两种加法器综合后的Schematic、LUT数量和关键路径的长度。表3RippleLookaheadLUTCriticalPath6、利用行为级描述完成基于FPGA的4位加法器设计与实现,并比较与前两个电路的异同,其实验过程与上述相同。表4Ripple(RTL)Lookahead(RTL)BehavioralLUTCriticalPath7、修改设计,利用开发板上的4个七段数码管显示加法器计算结果,其中FPGA管脚约束如下表所示。表5I/O名I/O类型管脚使用资源说明a_in[0]InputAB26S3按钮按下为高电平a_in[1]Inpu