资源描述
FPGAFPGA应用应用Xilinx FPGA底层硬件开发底层硬件开发底层硬件种类底层硬件种类 全局时钟网络全局时钟网络 PLLPLL模块模块 DCMDCM模块模块 块块RAMRAM资源资源 硬核乘法器硬核乘法器 高速收发器高速收发器 嵌入式处理器嵌入式处理器底层硬件使用底层硬件使用 硬件原语:硬件原语:Device PrimitiveDevice Primitive 菜单菜单Edit-Language TemplatesEdit-Language Templates Verilog-Device Primitive Instantation-FPGAVerilog-Device Primitive Instantation-FPGA IP CoreIP Core New SourceNew Source 选择选择IP Coregen&Architecture WizardIP Coregen&Architecture Wizard 选择相应类型选择相应类型IP CoreIP Core底层硬件底层硬件 全局时钟网络全局时钟网络 DLLDLL模块模块 DCMDCM模块模块 块块RAMRAM资源资源 硬核乘法器硬核乘法器 高速收发器高速收发器 嵌入式处理器嵌入式处理器时钟的时序特性时钟的时序特性 时钟偏移时钟偏移 时钟抖动:时钟抖动:时钟占空比失真时钟占空比失真 时钟建立、保持时间时钟建立、保持时间时钟偏移时钟偏移 时钟偏移时钟偏移(Skew)(Skew):同一时钟到达两个不同寄存器:同一时钟到达两个不同寄存器之间的时间差之间的时间差 时钟偏移分正偏移、负偏移时钟偏移分正偏移、负偏移全局时钟全局时钟 由专用的全局时钟管脚驱动单个全局时钟,由后由专用的全局时钟管脚驱动单个全局时钟,由后者去控制设计中的每个触发器者去控制设计中的每个触发器时钟设计原则时钟设计原则 不采用门控时钟,组合逻辑只输出到触发器输入不采用门控时钟,组合逻辑只输出到触发器输入端;端;全局时钟全局时钟IBUFGIBUFG全局时钟缓冲全局时钟缓冲IBUFGDSIBUFGDS差分全局时钟缓冲差分全局时钟缓冲BUFGBUFG全局缓冲全局缓冲BUFGPBUFGP带时钟使能信号的全局缓带时钟使能信号的全局缓冲冲BUFGMUXBUFGMUX全局时钟复用缓冲全局时钟复用缓冲BUFGDLLBUFGDLL全局时钟延迟锁相环全局时钟延迟锁相环全局时钟实现全局时钟实现BUFGP方法方法 IBUFG/IBUFGDS+BUFGIBUFG/IBUFGDS+BUFG IBUFGIBUFG后组合后组合BUFGBUFGIBUFG CLKIN_IBUFG_INST(IBUFG CLKIN_IBUFG_INST(.I(CLKIN_IN),.I(CLKIN_IN),.O(CLKIN_IBUFG);.O(CLKIN_IBUFG);BUFG CLK_BUFG_INST(BUFG CLK_BUFG_INST(.I(CLKIN_IBUFG),.I(CLKIN_IBUFG),O(CLK_OUT);O(CLK_OUT);BUFGP方法方法 IBUFG/IBUFGDS+BUFGIBUFG/IBUFGDS+BUFG IBUFGDSIBUFGDS后组合后组合BUFGBUFGIBUFGDS CLKIN_IBUFG_INST(IBUFGDS CLKIN_IBUFG_INST(.I(CLKIN_P_IN),.I(CLKIN_P_IN),.IB(CLKIN_N_IN),.IB(CLKIN_N_IN),.O(CLKIN_IBUFGDS);.O(CLKIN_IBUFGDS);BUFG CLK_BUFG_INST(BUFG CLK_BUFG_INST(.I(CLKIN_IBUFGDS),.I(CLKIN_IBUFGDS),.O(CLK_OUT);.O(CLK_OUT);LOGIC+BUFG方法方法 BUFGBUFG驱动普通信号驱动普通信号 当某个信号需要扇出非常大,且要求抖动延迟最小当某个信号需要扇出非常大,且要求抖动延迟最小 信号进入全局时钟布线层需要一个固有的延迟信号进入全局时钟布线层需要一个固有的延迟(10ns),(10ns),但但BUFGBUFG到其它所有单元的延时忽略不计到其它所有单元的延时忽略不计BUFG CLK_BUFG_INST(BUFG CLK_BUFG_INST(.I(CLK_IN),.I(CLK_IN),.O(CLK_OUT);.O(CLK_OUT);IBUFG/IBUFGDS+DCM+BUFG方法方法通过通过DCMDCM模块,对时钟进行同步、移相、分频、倍频等变换,并使全模块,对时钟进行同步、移相、分频、倍频等变换,并使全局时钟输出无抖动延迟局时钟输出无抖动延迟;IBUFG CLK_BUFG_INST(.I(CLK_IN),O(CLK_IBUFG);IBUFG CLK_BUFG_INST(.I(CLK_IN),O(CLK_IBUFG);DCM_ADV DCM_ADV_INST(.CLKFB(CLKFB_IN),DCM_ADV DCM_ADV_INST(.CLKFB(CLKFB_IN),.CLKIN(CLKIN_IBUFG),.DADDR(GND16:0),.DCLK(GND3),.CLKIN(CLKIN_IBUFG),.DADDR(GND16:0),.DCLK(GND3),.DEN(GND3),.DI(GND215:0,.DWE(GND3),.PSCLK(GND3),.DEN(GND3),.DI(GND215:0,.DWE(GND3),.PSCLK(GND3),.PSEN(GND3),.PSINCDEC(GND3),.RST(RST_IN),.PSEN(GND3),.PSINCDEC(GND3),.RST(RST_IN),.CLKFX(CLKFX_BUF),.CLK0(CLK0_BUF),.CLKFX(CLKFX_BUF),.CLK0(CLK0_BUF),.LOCKED(LOCKED_OUT);.LOCKED(LOCKED_OUT);BUFG CLKFX_BUFG_INST(.I(CLKFX_BUF),.O(CLKFX_OUT);BUFG CLKFX_BUFG_INST(.I(CLKFX_BUF),.O(CLKFX_OUT);LOGIC+DCM+BUFG方法方法 内部信号同步、移相、分频、倍频等变换,并使输出无抖内部信号同步、移相、分频、倍频等变换,并使输出无抖动延迟动延迟;DCM_ADV DCM_ADV_INST(.CLKFB(CLKFB_IN),DCM_ADV DCM_ADV_INST(.CLKFB(CLKFB_IN),.CLKIN(CLKIN_IN),.DADDR(GND16:0),.DCLK(GND3),.CLKIN(CLKIN_IN),.DADDR(GND16:0),.DCLK(GND3),.DEN(GND3),.DI(GND215:0,.DWE(GND3),.PSCLK(GND.DEN(GND3),.DI(GND215:0,.DWE(GND3),.PSCLK(GND3),3),.PSEN(GND3),.PSINCDEC(GND3),.RST(RST_IN),.PSEN(GND3),.PSINCDEC(GND3),.RST(RST_IN),.CLKFX(CLKFX_BUF),.CLK0(CLK0_BUF),.CLKFX(CLKFX_BUF),.CLK0(CLK0_BUF),.LOCKED(LOCKED_OUT);.LOCKED(LOCKED_OUT);BUFG CLKFX_BUFG_INST(.I(CLKFX_BUF),.O(CLKFX_OUT);BUFG CLKFX_BUFG_INST(.I(CLKFX_BUF),.O(CLKFX_OUT);第二全局时钟第二全局时钟 长线资源,驱动性能、抖动、延时指标仅次于全局时钟;长线资源,驱动性能、抖动、延时指标仅次于全局时钟;可驱动片内任一逻辑信号,一般用于高频、高扇出的时钟可驱动片内任一逻辑信号,一般用于高频、高扇出的时钟使能信号及高速路径上的关键信号使能信号及高速路径上的关键信号 全局时钟不占用逻辑资源,也不影响其它布线资源;但第全局时钟不占用逻辑资源,也不影响其它布线资源;但第二全局时钟资源要占用二全局时钟资源要占用 使用方法:定义线网约束属性使用方法:定义线网约束属性NET NET“s1s1”USELOWSKEWLINES;USELOWSKEWLINES;NET NET“s2s2”USELOWSKEWLINES;USELOWSKEWLINES;NET NET“s3s3”USELOWSKEWLINES;USELOWSKEWLINES;DCM模块模块 强大的强大的DLLDLL模块,功能包括:模块,功能包括:消除时钟延时消除时钟延时 频率合成频率合成 时钟相位调整时钟相位调整 优点:优点:实现零时钟偏移实现零时钟偏移(Skew)(Skew),消除时钟分配延迟,时钟闭环控制;,消除时钟分配延迟,时钟闭环控制;时钟可映射到时钟可映射到PCBPCB上,用于同步外部芯片,将内外时钟一体化;上,用于同步外部芯片,将内外时钟一体化;DCM模块模块DCM模块模块IP Core的使用的使用DCM模块模块IP Core的使用的使用DCM模块模块IP Core的使用的使用DCM模块模块IP Core的使用的使用DCM模块模块IP Core的使用的使用 实例化生成的实例化生成的DCMDCM模块;模块;实例化中的实例化中的CLK_INCLK_IN不能直接来自管脚,而必须是内部信号,不能直接来自管脚,而必须是内部信号,一般为时钟缓冲输出;一般为时钟缓冲输出;module dcm_top(module dcm_top(););mydcm dcm1(mydcm dcm1(););endmodule;endmodule;DCM模块模块IP Core的使用的使用内嵌块存储器的使用内嵌块存储器的使用 分类:分类:块存储器:独立的硬件存储器,不占用逻辑资源;用于大数据量块存储器:独立的硬件存储器,不占用逻辑资源;用于大数据量存储;存储;分布式存储器:查找表和触发器逻辑形成;用于小数据量环境;分布式存储器:查找表和触发器逻辑形成;用于小数据量环境;1616位移位存储器:查找表和触发器逻辑形成;用于小数据量环境;位移位存储器:查找表和触发器逻辑形成;用于小数据量环境;可生成:可生成:单端口单端口RAMRAM 简单双端口简单双端口RAMRAM 真双端口真双端口RAMRAM ROMROM FIFOFIFO内嵌块存储器的使用内嵌块存储器的使用内嵌块存储器的使用内嵌块存储器的使用ROM应用示例应用示例 步骤:步骤:建立建立ROMROM存储文件存储文件.coe.coe 调用调用IP Generator-Memories&Storage IP Generator-Memories&Storage Elements-RAMs&ROMs-Block Memory Elements-RAMs&ROMs-Block Memory GeneratorGenerator 配置配置ROMROMROM应用示例应用示例ROM应用示例应用示例 接口信号:接口信号:ADDRA:ADDRA:端口端口A A地址地址 ENAENA:端口使能:端口使能 SSRASSRA:初始化输出锁存器或寄存器:初始化输出锁存器或寄存器 REGCEAREGCEA:使能输出寄存器:使能输出寄存器 CLKACLKA:时钟:时钟 DOUTADOUTA:数据输出:数据输出ROM应用示例应用示例ROM应用示例应用示例ROM应用示例应用示例ROM初始化文件初始化文件(.coe)格式格式 ASCIIASCII文本文本 第一行说明数制,可选择二进制、十进制、十六进制,以第一行说明数制,可选择二进制、十进制、十六进制,以”;”结束;结束;第二行数据开始,固定格式;第二行数据开始,固定格式;第三行开始,要载入的初始化数据,每个数据之间用第三行开始,要载入的初始化数据,每个数据之间用”,”隔开,隔开,可多行书写,结尾以可多行书写,结尾以”;”结束结束memory_initialization_radix=16;memory_initialization_radix=16;memory_initialization_vector=memory_initialization_vector=3f8,5,8,7,3f1,1b,3f8,5,8,7,3f1,1b,114,243,114,243,2ba,1a7,132,2ba,1a7,132,;硬核乘法器硬核乘法器 功能:功能:乘法器,乘法器累加器,乘法器加法器乘法器,乘法器累加器,乘法器加法器/减法器,三输入加法减法器,三输入加法器,桶刑移位器,宽总线多路复用器,宽计数器器,桶刑移位器,宽总线多路复用器,宽计数器 特点特点 18181818位,补码乘法器具有完整位,补码乘法器具有完整3636位结果,符号可扩展到位结果,符号可扩展到4848位;位;三输入,灵活的三输入,灵活的4848位加法器位加法器/减法器,具有可选的寄存器累加反馈;减法器,具有可选的寄存器累加反馈;动态用户控制操作方式;动态用户控制操作方式;级联的级联的1818位总线,支持输入取样传递;位总线,支持输入取样传递;级联的级联的4848位位P P总线,支持部分结果的输出传递;总线,支持部分结果的输出传递;多精度乘法器和算法支持,多精度乘法器和算法支持,1717位操作数右移位;位操作数右移位;对称智能舍入;对称智能舍入;提供更高性能流水线选项;提供更高性能流水线选项;独立的复位和时钟,实现控制和数据寄存器独立的复位和时钟,实现控制和数据寄存器硬核乘法器接口硬核乘法器接口A:A:乘法器操作数,位宽可定义,支持有符号乘法器操作数,位宽可定义,支持有符号/无符号;无符号;B B:乘法器操作数,位宽可与:乘法器操作数,位宽可与A A不同不同;可导入常数可导入常数接收接收A A口输入信号,与一个常数相乘;常数可固定,或重导入;口输入信号,与一个常数相乘;常数可固定,或重导入;CLKCLK:工作时钟,上升沿有效;:工作时钟,上升沿有效;CECE:片选,指示时钟是否有效;:片选,指示时钟是否有效;NDND:握手信号:握手信号ACLRACLR:异步清零信号:异步清零信号SCLRSCLR:同步清零信号:同步清零信号LOADBLOADB:当:当RCCMRCCM时有效;高电平时,时有效;高电平时,B B端口新的输入可重新输入写入;端口新的输入可重新输入写入;SWAPBSWAPB:当:当RCCMRCCM时有效;高电平时,在计算模块的存储单元已存有多个常数时有效;高电平时,在计算模块的存储单元已存有多个常数中选择;中选择;RDYRDY:输出有效指示;:输出有效指示;RFDRFD:输出数据有效指示,边沿有效;:输出数据有效指示,边沿有效;O O:异步输出信号;:异步输出信号;Q Q:同步输出信号;:同步输出信号;LOAD_DONELOAD_DONE:当:当RCCMRCCM时有效,指示重新导入数据过程完成;时有效,指示重新导入数据过程完成;硬核乘法器使用步骤硬核乘法器使用步骤 添加添加IP CoreIP Core文件文件 FPGA Features and Design-XTremeDSP Slice-FPGA Features and Design-XTremeDSP Slice-Multiplier v9.1iMultiplier v9.1i 配置配置IP CodeIP Code参数参数 完成配置后,实例化模块完成配置后,实例化模块硬核乘法器使用硬核乘法器使用硬核乘法器使用硬核乘法器使用硬核乘法器使用硬核乘法器使用硬核乘法器实例化硬核乘法器实例化module multiply1(sclr,rfd,rdy,nd,clk,a,b,q);module multiply1(sclr,rfd,rdy,nd,clk,a,b,q);input sclr,nd,clk;input sclr,nd,clk;output rfd,rdy;output rfd,rdy;input 17:0 a,b;input 17:0 a,b;output 35:0 q;output 35:0 q;multiply multiply(.sclr(sclr),.rfd(rfd),multiply multiply(.sclr(sclr),.rfd(rfd),.rdy(rdy),.nd(nd),.clk(clk),.a(a),.b(b),.rdy(rdy),.nd(nd),.clk(clk),.a(a),.b(b),.q(q);.q(q);endmoduleendmodule硬核乘法器实例化硬核乘法器实例化module multiply1(sclr,rfd,rdy,nd,clk,a,b,q);module multiply1(sclr,rfd,rdy,nd,clk,a,b,q);input sclr,nd,clk;input sclr,nd,clk;output rfd,rdy;output rfd,rdy;input 17:0 a,b;input 17:0 a,b;output 35:0 q;output 35:0 q;multiply multiply(.sclr(sclr),.rfd(rfd),multiply multiply(.sclr(sclr),.rfd(rfd),.rdy(rdy),.nd(nd),.clk(clk),.a(a),.b(b),.rdy(rdy),.nd(nd),.clk(clk),.a(a),.b(b),.q(q);.q(q);endmoduleendmodule设计实例:块设计实例:块RAM实现函数发生器实现函数发生器 相位累加器对频率控制字线性累加,得到相位码对波相位累加器对频率控制字线性累加,得到相位码对波形存储器寻址,输出相应幅度字,经形存储器寻址,输出相应幅度字,经DADA得到阶梯波,得到阶梯波,最后利用滤波器平滑化最后利用滤波器平滑化设计实例:块设计实例:块RAM实现函数发生器实现函数发生器 相位累加器由相位累加器由N N位加法器与位加法器与N N位累加寄存器构成:每来位累加寄存器构成:每来一个时钟脉冲,加法器将频率控制字一个时钟脉冲,加法器将频率控制字K K与累加寄存器与累加寄存器相加,将结果送至累加寄存器输入端相加,将结果送至累加寄存器输入端 累加寄存器将加法器在上一时钟脉冲产生的新相位数累加寄存器将加法器在上一时钟脉冲产生的新相位数据反馈到加法器输入端据反馈到加法器输入端,使加法器在下一时钟脉冲继使加法器在下一时钟脉冲继续与频率控制器相加,累加寄存器输出数据即合成信续与频率控制器相加,累加寄存器输出数据即合成信号的相位号的相位设计实例:块设计实例:块RAM实现函数发生器实现函数发生器 用上述相位数据作为地址查波形存储器用上述相位数据作为地址查波形存储器(ROM)(ROM)表表,得到得到信号幅值信号幅值 波形存储器存储余弦信号波形;实际应用时,利用对波形存储器存储余弦信号波形;实际应用时,利用对称性,只需存储称性,只需存储/2/2周期波形周期波形 DADA转换器将数字量波形值转换成模拟量转换器将数字量波形值转换成模拟量 低通滤波器滤除不需要的取样分量,将低通滤波器滤除不需要的取样分量,将DADA后阶梯信号后阶梯信号平滑化平滑化设计实例:块设计实例:块RAM实现函数发生器实现函数发生器timescale 1ns/1pstimescale 1ns/1psmodule mydds(module mydds(DATA,/DATA,/频率控制字频率控制字WE_F,/WE_F,/频率控制字写使能频率控制字写使能CLKP,/CLKP,/时钟时钟CE,/DDSCE,/DDS使能使能ACLR,/ACLR,/复位复位SINE,/SINE,/正弦信号输出正弦信号输出COSINE/COSINE/余弦信号输出余弦信号输出););input 31:0 DATA;input 31:0 DATA;input WE_F;input WE_F;input CLKP;input CLKP;input CE;input CE;input ACLR;input ACLR;output 15:0 SINE;output 15:0 SINE;output 15:0 COSINE;output 15:0 COSINE;parameter DATA_DEF=32H51EB851;parameter DATA_DEF=32H51EB851;reg 31:0 ADD_A;reg 31:0 ADD_A;reg 31:0 ADD_B;reg 31:0 ADD_B;wire 31:0 DATA;wire 31:0 DATA;/ADD_A/ADD_A always(posedge CLKP or posedge ACLR)always(posedge CLKP or posedge ACLR)if(ACLR)if(ACLR)ADD_A=DATA_DEF;ADD_A=DATA_DEF;else if(WE_F)else if(WE_F)ADD_A=DATA;ADD_A=DATA;/ADD_B/ADD_B always(posedge CLKP or posedge ACLR)always(posedge CLKP or posedge ACLR)/OLD CLKN/OLD CLKN if(ACLR)if(ACLR)ADD_B=0;ADD_B=0;else if(CE)else if(CE)ADD_B=ADD_B+ADD_A;ADD_B=ADD_B+ADD_A;设计实例:块设计实例:块RAM实现函数发生器实现函数发生器/COS/COS wire 10:0 ROM_A;wire 10:0 ROM_A;assign ROM_A=ADD_B31:21;assign ROM_A=ADD_B31:21;wire 15:0 COS_D;wire 15:0 COS_D;rom_cos cos(/rom_cos cos(/余弦信号余弦信号ROMROM.addr(ROM_A),.addr(ROM_A),.clk(CLKP),.clk(CLKP),.dout(COS_D),.dout(COS_D),.en(CE);.en(CE);reg 15:0 COS_DR;reg 15:0 COS_DR;always(posedge CLKP or posedge ACLR)always(posedge CLKP or posedge ACLR)/OLD CLKN/OLD CLKN if(ACLR)if(ACLR)COS_DR=0;COS_DR=0;else if(CE)else if(CE)COS_DR=COS_D;COS_DR=COS_D;assign COSINE=COS_DR;assign COSINE=COS_DR;/SINE/SINE wire 15:0 SIN_D;wire 15:0 SIN_D;rom_sin sin(/rom_sin sin(/正正弦弦信号信号ROMROM.addr(ROM_A),.addr(ROM_A),.clk(CLKP),.clk(CLKP),.dout(SIN_D),.dout(SIN_D),.en(CE);.en(CE);reg 15:0 SIN_DR;reg 15:0 SIN_DR;always(posedge CLKP or posedge ACLR)always(posedge CLKP or posedge ACLR)/OLD CLKN/OLD CLKN if(ACLR)if(ACLR)SIN_DR=0;SIN_DR=0;else if(CE)else if(CE)SIN_DR=SIN_D;SIN_DR=SIN_D;assign SINE=SIN_DR;assign SINE=SIN_DR;endmoduleendmoduleISE使用技巧使用技巧ISE使用技巧使用技巧ISE使用技巧使用技巧ISE使用技巧使用技巧
展开阅读全文