数字系统VHDL设计金明录教授DUT2009年夏季数字系统的VHDL设计金明录教授数字系统VHDL设计金明录教授DUT1.FPGA中的函数实现2.基于香农分解的函数实现3.FPGA的进位链4.商用FPGA的逻辑模块举例5.FPGA中的专用存储器6.FPGA中的专用乘法器7.可编程能力的代价8.FPGA和单热状态赋值9.FPGA的容量10.设计综合11.映射、布局和布线第6章FPGA设计实例数字系统VHDL设计金明录教授DUT只读存储器(ROM)复习:基于ROM的逻辑函数实现数字系统VHDL设计金明录教授DUT一个ROM可以用来实现任何组合电路。采用查表法(LUT)实现逻辑函数的真值表。2位加法器223XYSum1010XXXX0000000100100011010001010110011110001001101010111100110111101111000001010011001010011100010011100101011100101110210FFFLSB2A16×3ROMxxAAA000131YY1LSB2DDD012SSS01复习:基于ROM的逻辑函数实现数字系统VHDL设计金明录教授DUTBCD-余3码转换器PSNSZX=0X=1X=0X=1S0S1S2S3S4S5S6S1S3S4S5S5S0S0S2S4S4S5S6S0—1100101001101—复习:基于ROM的逻辑函数实现数字系统VHDL设计金明录教授DUT复习:基于ROM的逻辑函数实现数字系统VHDL设计金明录教授DUTBlockRAMsBlockRAMsConfigurableLogicBlocksI/OBlocksBlockRAMsXilinxFPGA数字系统VHDL设计金明录教授DUTCLBCLBCLBCLBLogiccellSliceLogiccellLogiccellSliceLogiccellLogiccellSliceLogiccellLogiccellSliceLogiccellConfigurablelogicblock(CLB)XilinxCLB数字系统VHDL设计金明录教授DUTX方程生成器LUT4FFMDCESR0123XXXXY方程生成器LUT4FFMDCESR0123YYYYQQXY基于查找表(LUT)的可编程逻辑模块1、FPGA中的函数实现数字系统VHDL设计金明录教授DUT4选1多路选择器1、FPGA中的函数实现100101102103''''MSSISSISSISSILUT4SDQFFR1Y2Y3Y4YQYYX方程生成器LUT4SDQFFER1X2X3X4XQXXY方程生成器CCE数字系统VHDL设计金明录教授DUT10001'MSISI20203'MSISI1112'MSMSM2-1MUX2-1MUX2-1MUX0I1I2I3I0S0S1M2MM0SM1S01数字系统VHDL设计金明录教授DUTX方程生成器LUT4FFDCESR0123XXXXY方程生成器LUT4FFDCESR0123YYYYQQYX方程生成器LUT4FFDCESR0123XXXXY方程生成器LUT4FFDCESR0123YYYYQQXYXMQXQYQXQY1M2M010IIS230IIS10001'MSISI20203'MSISI1112'MSMSM数字系统VHDL设计金明录教授DUT输入输出X4X3(S0)X2(I1)X1(I0)XXXXXXXX00001111001100110101010101010011X数字系统VHDL设计金明录教授DUTX函数生成器LUT4X1X2X3X4Y函数生成器LUT4Y1Y2Y3Y4Z函数生成器LUT3FFSDCERQFFSDCERQQXXoutQYYout=可编程MUXZXYC2112341234(,,,)'(,,,)ZfFFFFCfFFFFCXC4000数字系统VHDL设计金明录教授DUTX函数生成器LUT4X1X2X3X4Y函数生成器LUT4Y1Y2Y3Y4Z函数生成器LUT3FFSDCERQFFSDCERQQXXoutQYYout=可编程MUXZS1YCS0I0I1S0I2I3X1001011021031000110203'''''(')(')MSSISSISSISSISSISISSISI数字系统VHDL设计金明录教授DUT100101102103''''MSSISSISSISSIX函数生成器LUT4X1X2X3X4Y函数生成器LUT4Y1Y2Y3Y4Z函数生成器LUT3FFSDCERQFFSDCERQQXXoutQYYout=可编程MUXZXYCF1F2数字系统VHDL设计金明录教授DUT循环移位计数器FF1D1QFF2D2QFF3D3QFF4D4Q1Q2Q3Q4QCLK11DQ22DQ33DQ44DQX方程生成器LUT4FFDCESR0123XXXXY方程生成器LUT4FFDCESR0123YYYYQQYX方程生成器LUT4FFDCESR0123XXXXY方程生成器LUT4FFDCESR0123YYYYQQXYXQXQYQXQY1Q2Q1D2D3Q4Q4D3D数字系统VHDL设计金明录教授DUT2、基于香农分解的函数实现01(,,,,,)'(0,,,,,)(1,,,,,)'ZabcdefaZbcdefaZbcdefaZaZ6变量函数的香农分解数字系统VHDL设计金明录教授DUT0123(,,,,,)''(0,0,,,,)'(0,1,,,,)'(1,0,,,,)(1,1,,,,)''''ZabcdefabZcdefabZcdefabZcdefabZcdefabYabYabYabY6变量函数的香农分解数字系统VHDL设计金明录教授DUTLUT4LUT4LUT4LUT44D.E.F.G4D.E.F.G4D.E.F.G4D.E.F.GLUT4LUT4LUT4LUT44D.E.F.G4D.E.F.G4D.E.F.G4D.E.F.GMuxCMuxCMuxCMuxCMuxBMuxBMuxAZ7变量函数的香农分解数字系统VHDL设计金明录教授DUTLUT4LUT4Mux44MuxMuxDCEQDCEQABBYGFBXFiYYQXXQMuxMuxMuxMuxMuxMuxMuxLUT4LUT4LUT4LUT4LUT4LUT4LUT4LUT4D.E.F.G4D.E.F.G4D.E.F.G4D.E.F.G4D.E.F.G4D.E.F.G4D.E.F.G4D.E.F.G4CCCCBBAZ7变量函数的香农分解XilinxSpartanSlice数字系统VHDL设计金明录教授DUT3、FPGA的进位链可编程LUTFF专用进位链s1Carryin可编程LUTFF专用进位链s2可编程LUTFF专用进位链snCarry逻辑模块1逻辑模块2Carry逻辑模块n可编程LUTFF专用进位链Carry-OutCarry逻辑模块n+1一个n位加法器,一般需要2n个逻辑模块,但用进位链只需要n个模块。AllmajorsynthesistoolscaninfercarrylogicforarithmeticfunctionsAddition(SUM=A+B)Subtraction(DIFF=A-B)Comparators(ifABthen…)Counters(count=count+1)数字系统VHDL设计金明录教授DUT4、FPGA中的级联链数字系统VHDL设计金明录教授DUT5、商用FPGA的逻辑模块举例Xilinx基本逻辑模块slice,CLB{2-4Slice}进位逻辑16入口LUT控制逻辑CEDQ16入口LUT进位逻辑控制逻辑CEDQMuxMuxCoutG输入4FXAFXBBYBX4F输入CinYYQFXF5XXQ数字系统VHDL设计金明录教授DUTAlteraStratix逻辑单元LELUT4进位链逻辑控制逻辑输出逻辑数据4LUT链CoutCinClearLoadDCELDCLKQ数字系统VHDL设计金明录教授DUT6、FPGA中的专用存储器逻辑模块阵列SRAM模块SRAM模块数字系统VHDL设计金明录教授DUTRAMblocksMultipliersLogicblocksRAMBlocksandMultipliersinXilinxFPGAs数字系统VHDL设计金明录教授DUTFPGA系列专用RAM大小(Kb)组织XilinxVirtex51152~1036864~57618Kb模块XilinxVirtex4864~993648~55218Kb模块XilinxVirtex-II72~30244~16818Kb模块XilinxSpartan3E72~6484~3618Kb模块AlteraStratixII409~9163104~930512b模块78~7684Kb模块0~9512Kb模块AlteraCycloneII117~112526~2504Kb模块LatticeSC1054~798756~42418Kb模块ActelFusion27~2706~604Kb模块数字系统VHDL设计金明录教授DUT4输入LUTRAM116FFFFD1D2Address[3:0]ENEN4输入LUTRAM116基于LUT的RAMFPGA系列基于LUT的RAM(Kb)LUT个数XilinxVirtex5320~342019200~207,360XilinxVirtex496~98712288~1126,336XilinxVirtex-II8~1456512~93,184XilinxSpartan3E15~231*1920~29,504AlteraStratixII195~2242**12480~143,520AlteraCycloneII72~1069**4608~68,416LatticeSC245~188415200~115,200LatticeECP212~1366000~68,000数字系统VHDL设计金明录教授DUT实现LUT存储器的典型行为描述VHDL代码数字系统VHDL设计金明录教授DUT实现专用存储器的典型行为描述VHDL代码libraryIEEE;useIEEE.numeric_bit.all;entityMemory2isport(Address:inunsigned(6downto0);CLK,MemWrite:inbit;Data_In:inunsigned(31downto0);Data_Out:outunsigned(31downto0));endMemory2;architectureBehavioralofMemory2istypeRAMisarray(0to127)ofunsigned(31downto0);signalDataMEM:RAM;--noinitialvaluesbeginprocess(CLK)beginifCLK'eventandCLK='1'thenifMemWrite='1'thenDataMEM(to_integer(Address))=Data_In;--SynchronousWriteendif;Data_Out=DataMEM(to_integer(Address));--SynchronousReadendif;endprocess;endBehavioral;数字系统VHDL设计金明录教授DUT基于LUT的4x4乘法器数字系统VHDL设计金明录教授DUT基于专用RAM的4x4乘法器数字系统VHDL设计金明录教授DUT7、FPGA中的专用乘法器数字系统VHDL设计金明录教授DUT7、FPGA中的专用乘法器被乘数乘数1818乘法器积181836当我们需要计算两个多于18位数的乘法时,可以把多个内嵌专用乘法器连在一起用。若A和B均为32位,设C、D、E和F均为16位,并有161