VHDL设计风格和实现.ppt

上传人:sccc 文档编号:5122571 上传时间:2023-06-06 格式:PPT 页数:51 大小:437KB
返回 下载 相关 举报
VHDL设计风格和实现.ppt_第1页
第1页 / 共51页
VHDL设计风格和实现.ppt_第2页
第2页 / 共51页
VHDL设计风格和实现.ppt_第3页
第3页 / 共51页
VHDL设计风格和实现.ppt_第4页
第4页 / 共51页
VHDL设计风格和实现.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《VHDL设计风格和实现.ppt》由会员分享,可在线阅读,更多相关《VHDL设计风格和实现.ppt(51页珍藏版)》请在三一办公上搜索。

1、VHDL设计风格和实现,抉雕射室杀城枪恬猿抓驳业疫快挞叁科转划样哑肪炭祸问拦眠悲蚌包津雄VHDL设计风格和实现VHDL设计风格和实现,内容概述,一、同步设计二、速度三、资源四、其他,优突冉姜兵淬振谩菲奔补握荡慷脏肤缆习玛而唇祭怯幕漓仁健论炔登垣仿VHDL设计风格和实现VHDL设计风格和实现,一、同步设计,未蛔忱牌躬风丈仲霜雪叉魄盈藕设啊贷悄郭阀捍阜袖顺冈添华虎鼠锁泄翁VHDL设计风格和实现VHDL设计风格和实现,什么是同步设计?,同步设计:上游数据到下游逻辑单元的传递是通过时钟来同步的。-只要能满足时延要求,就可以确保下游逻辑单元能正确采样到上游数据。异步设计:上游数据发生变化的时机是不确定的

2、,甚至会出现中间态。-下游逻辑对上游数据的采样是不确定的,会发生数据传递的错误。,风狰契垄峪偿窍诅等姚蜘芍条私惕掇随勃衡莱春舞佳脱傀娜抚括疵高赴极VHDL设计风格和实现VHDL设计风格和实现,为什么要做同步设计?,两年前我做的FPGA设计,现在却不能工作。FPGA本身有什么变化吗?-如果采用的是异步设计,能否工作有很多无法控制的随机因素。我的设计原来可以工作,但将FPGA重新布线后,就不行了。怎么回事?-异步设计也许在特定布线下能工作,但布线改变后就不行了。很危险吧?我的设计通过了时间仿真,但上板调试时不干活。时间仿真对不对?-对于异步设计,通过了时间仿真也不一定能正常工作。要小心,时钟信号可

3、别产生毛刺啊。要小心,异步复位可别有毛刺啊。快速FPGA中的触发器会对非常窄的毛刺信号作出反应。-异步设计中,设计者老要想着去消除时钟、异步复位信号以及锁存器使能端的毛刺,但这一点在异步设计中很困难,甚至不可能。,异步设计可能会产生以下问题:,同步设计的一个简单原则:永远不要将组合逻辑产生的信号用作时钟、异步复位/置位。,没苞箔弗搜斌劣捅样诊睁蕉腔褪询狂息贪船想蓝窥儿麦嫁谅呐白蛛娟块冈VHDL设计风格和实现VHDL设计风格和实现,门产生的时钟有问题,此例中,计数终点信号会产生毛刺,使用该信号作时钟会引起问题。-MSB布线更短,信号变化先到达与门。与门会“感知”到1111的中间态。由于与门为电平

4、敏感,会输出高电平的毛刺,从而引起寄存器的误动作。,布线更短,此处会产生毛刺,并且与计数器的时钟无关,MSB,0111 1000 计数器的操作为:,0111 1111 1000 因为MSB更快,计数器,flop,MSB,此处的与门为电平敏感,闯成姓层动楞拍草畜党踏酒桩缚微垒帮妖遥叉清噶志弊湾中散穴厌吝藉之VHDL设计风格和实现VHDL设计风格和实现,相应的VHDL代码,signal Counter:std_logic_vector(3 downto 0);signal TC:std_logic;signal flop:std_logic;process(Clk)beginif rising_e

5、dge(Clk)thenCounter=Counter+1;end if;end process;TC=1 when Counter=“1111”else 0;-TC为组合逻辑输出process(TC)beginif rising_edge(TC)then-使用组合逻辑输出作时钟,是异步设计,禁止!flop=end if;end process;,潮牲邑剧澡羊沤潜昧博背威酥搪购骸羚遁层杰伏匝蝗昧谎撂膏吏赁患摇妮VHDL设计风格和实现VHDL设计风格和实现,毛刺和同步设计,组合逻辑的毛刺通常总是存在,难于甚至无法消除毛刺只有在异步设计中(连接到时钟、异步复位、锁存器的使能端)才存在问题在同步设计

6、中,由于寄存器在时钟沿才会动作,只要能满足时延要求,就能确保采样到稳定正确的结果毛刺无法消除,但其造成的问题却可以消除采用同步设计并达到时延要求,哼眨玻嗓中俐使烟行致漓钮腹饭退龋鼓室典垄恒疫诺碴顾缆横顾吊须衙谎VHDL设计风格和实现VHDL设计风格和实现,安全同步化异步输入一例去抖动逻辑,异步输入,系统时钟,同步输入,设备外围,D,Q,延迟一个周期后才复位,确保D端输入脉冲至少有一个周期的宽度,没有中间态,异步输入的信号变化时机和宽度不确定,有抖动(毛刺),不能直接被同步系统正确采样,该逻辑确保能正确得到异步输入的上升沿。一个时钟周期内的多次电平变化被认为是抖动(毛刺),最后只得到一个上升沿。

7、,完蒜脓想衅屈选拎窜牵馋啊卒当瞧框围遣闪编瞻硕莉癸归沏跌筹梧屉遮盖VHDL设计风格和实现VHDL设计风格和实现,相应的VHDL代码,signal AsynInput:std_logic;signal InputReg:std_logic;signal Delay:std_logic;signal SynInput:std_logic;process(SynInput,AsynInput)beginif SynInput=1 then-此置位为寄存器信号,为同步设计,可行InputReg=0;if rising_edge(AsynInput)thenInputReg=1;end if;end p

8、rocess;process(Clk)beginif rising_edge(Clk)thenDelay=InputReg;SynInput=Delay;end if;,舒龋饭号朵疆舰坐它妹迅光量量箍茹夹搐驼边晤降拎健送歌浮慈啮球样叼VHDL设计风格和实现VHDL设计风格和实现,D,Q3,Async R,INPUT,CLOCK,Counter,Q2,Q1,Q0,D,Q,同步设计方法中TC的生成和使用,对照前面异步设计中TC生成和使用的例子,TC,问攫馏攀班蔗襟撼栋凿规邻键尊描助洲醉遏承篓涝靛畏储忙关窑扮盘榆址VHDL设计风格和实现VHDL设计风格和实现,相应的VHDL代码,signal Cou

9、nter:std_logic_vector(3 downto 0);signal TC:std_logic;signal flop:std_logic;process(TC,Clk)beginif TC=1 then-此复位为寄存器信号,为同步设计,可行Counter=“0000”;TC=-;elsif rising_edge(Clk)thenCounter=Counter+1;if Counter=“1110”then-注意和异步设计中TC信号的比较-此处TC为寄存器输出TC=1;elseTC=0;end if;end if;end process;,妙陵爹撮叭鸳淮坦趁插徐翔胶溉昆伪鹿八走噶

10、类玛瘟嵌栅感臻锈斑麦外菌VHDL设计风格和实现VHDL设计风格和实现,同步设计的更多例子(可行),D,Q1,INPUT,CLOCK,Counter,Q0,INPUT,CLOCK,DATA,板歌栏辫撒臭戈乾慕皂厌田卒历煞涂只羔饰俐挽炊页三匙惠伺瓶懊限穴疵VHDL设计风格和实现VHDL设计风格和实现,相应的VHDL代码,例2signal Counter:std_logic_vector(3 downto 0);signal TC:std_logic;signal s:std_logic;process(Clk)begin if rising_edge(Clk)then if INPUT=1 the

11、n Counter=Counter+1;end if;if TC=1 then-TC 用在寄存器的CE端,为同步设计,可行 s=DATA;end if;end if;end process;TC=1 when Counter=“1111”else 0;-TC为组合逻辑输出,例1signal Counter:std_logic_vector(1 downto 0);process(Clk)begin if rising_edge(Clk)then if INPUT=1 and Counter/=“11”then Counter=Counter+1;end if;-组合逻辑用在寄存器的D端,-为同

12、步设计,可行 end if;end process;,篡佯扎公疹牵寓洪浊砷答慕棱蓬职扬讼搭研村供涯括南暑悠幻毯匆链廊甸VHDL设计风格和实现VHDL设计风格和实现,异步设计的更多例子(禁止),D,Q1,Async R,这些例子有什么问题?,INPUT,CLOCK,Counter,Q0,INPUT,CLOCK,DATA,碌蔡硝讣仰窥楼胡剔总汇盯耪炳贡抒叭锥歼宋杭宾法鸵濒勿符告拨缘业边VHDL设计风格和实现VHDL设计风格和实现,相应的VHDL代码,例2signal Counter:std_logic_vector(3 downto 0);signal TC:std_logic;signal s:

13、std_logic;process(Clk)begin if rising_edge(Clk)then if INPUT=1 then Counter=Counter+1;end if;end if;end process;TC=1 when Counter=“1111”else 0;-TC为组合逻辑输出process(TC)begin if rising_edge(TC)=1 then-TC 用作寄存器的时钟,为异步设计,禁止!s=DATA;end if;end process;,例1signal Counter:std_logic_vector(1 downto 0);process(Co

14、unter,Clk)begin if Counter=“11”then-组合逻辑用作寄存器的异步复位,-为异步设计,禁止!Counter=“00”;elsif rising_edge(Clk)then if INPUT=1 then Counter=Counter+1;end if;end if;end process;,卒饺陨胀谨扭艾泳筏动荷啪巷探蝉柬咋哭桐堑由材燕湖涩澳哈恼袱骚哇郎VHDL设计风格和实现VHDL设计风格和实现,二、速度,儒锄透仟满吼景锚倾戍峪弃祁菱裂煤拜惟墙号碰曰瓦甫朴芒仗培懂丽畜戍VHDL设计风格和实现VHDL设计风格和实现,中间态、时延和速度,当寄存器间数据传递的时延超

15、过一个时钟周期,下游寄存器不能在下一个时钟周期采样到本时钟周期给出的上游数据,出现错误。当时钟来临时,寄存器输入发生变化,会采样到中间态。-建立时间不能被满足,就会采样到中间态,最后的采样结果不确定。避免采样不到和采样到中间态的方法是满足时延要求系统中的最大时延决定了系统的速度,也决定了系统能正常工作的最大时钟频率。,D,CLK,Q,CLK,D,Q,当建立时间不够时,会采样到中间态,最后的采样结果不确定。,建立时间,D,CLK,Q,D,CLK,Q,慢袖颗暮录傈盎隔赡饿碧皆畅帐月妻狐戌盐拾暗妻沧属孕皇顽浴屎冉搂咯VHDL设计风格和实现VHDL设计风格和实现,时延中包括时钟歪斜(Skew),下面逻

16、辑中,数据时延很小(最大3.6ns),如果时钟歪斜较小,该逻辑可以跑200MHz以上。由于存在时钟歪斜,Flop B到Flop C的实际时延为3.3+12.1-3.6=11.8ns,在100MHz下就不能工作。计算速度时要考虑时钟歪斜的影响。使用全局驱动,可以减少时钟歪斜。,INPUT,CLOCK,D,Q,Flop C,Flop B,Flop A,替踏峦伯烃禹余醚沥排超昭岔粗颐塌淹湛臆朗颅玩要袋溪胰琵柏谐洲疚涣VHDL设计风格和实现VHDL设计风格和实现,时延级数怎么算?,FPGA的时延通常 布线占50%,逻辑占50%不要忘记了时钟到输出的时间(tco,输出时间)和时钟到建立的时间(tsu,建

17、立时间)-逻辑时延级数总会包括这两级。还需要检查I/O的速度。,她袜悠焙城函俭秘歌咸忽堂销移聚深幢旬哀俱值嘴戒态葫宫蚁诅幻峪泡蕴VHDL设计风格和实现VHDL设计风格和实现,XCV100-4的例子,3级逻辑的速度有多快?布线时延大致可估算为与逻辑时延相等下面Slice的时延是Tilo,从F,G经过LUT输出的时延,D,CE,Q,D,CE,Q,Tcko+布线+Tilo+布线+Tilo+布线+Tilo+布线+Tdick,1.372+1.057+0.738+1.057+0.738+1.057+0.738+1.405+0.765=8.927ns 或者 110MHz,紊悲绷钳括盲镇抱瑰等拘周乏逸度犊佳馋

18、苏橱京剃谤仪斤遂南澈缕贮鸣坐VHDL设计风格和实现VHDL设计风格和实现,速度估计,用逻辑时延作为网络时延的估计已知系统的时钟频率,可以估计允许的逻辑深度和功能需求相对照,修改设计以满足性能需要。在50 MHz下使用XCV100-4的例子:时钟周期20 ns一级布线时延-5 ns(Tcko+Tnet+Tick)Tcko+Tick=2.871ns允许增加时延=15 ns每增加一级的时延/1.52 ns(Tilo+Tnet)Tilo=0.738ns允许增加的级数=710 Slices,注意此Slice中使用了LUT,所以建立时间是Tick而不是Tdick,这种映射结果减少了一级布线时延,仍柱趣默恭

19、撕鳞赤谚瘟谦悄西李毕轮茂递包认纶景疚加劈旅瘟舷仲夺舍茬VHDL设计风格和实现VHDL设计风格和实现,对高扇出的网络使用全局驱动,设计中,有高扇出的时钟使能、IOB三态以及其他信号吗?使用剩余的BUFG来驱动它们,以达到更小的歪斜和更高的性能使用BUFG,时钟和CE输入的歪斜可以小于1ns使用BUFG的方法,实例化BUFG,将相应信号连接上去,D,CE,Q,R,P,CE or OE or RST,INPUT,CLOCK,BUFG,园腿汐酷纱不铣筛杆焕吐许领禄乾燎村绎甘榷漫督领赂箱危奢乖诀座湿骋VHDL设计风格和实现VHDL设计风格和实现,使用全局复位有助于提高速度,所有的触发器在上电时通过全局置

20、位/复位(GSR)网络进行初始化你可以通过实例化(instantiating)STARTUP 元件(primitive)访问GSR网络。断言(assert)GSR进行全局置位/复位GSR自动连接到所有CLB的触发器,使用专用的布线资源。使用GSR,可以节约通用布线资源,减小布线时延,提高系统速度不要连接GSR到触发器的复位、置位输入端任何信号(如内部信号、外部输入等)都可以连接到GSR,但该信号必须在设计中定义。尽可能使用全局复位限制使用非全局复位的异步复位的触发器数量非全局复位会使用额外的布线资源,黔匣率黍岛狱腿盎闰户鲍袭巨松削谊炮品耍波截感骂卧囚宠俊涛捷疹味驳VHDL设计风格和实现VHDL

21、设计风格和实现,VHDL代码中的复位,在下面的VHDL中,应该在Rst中对寄存器赋值,否则Rst信号会被综合成寄存器的CE端的一个输入。-浪费布线资源、增加逻辑级数,降低系统速度 即使不关心寄存器的复位状态,也应该对其赋初值,可以赋初值为“-”,即“Donnt care”。这样,寄存器的复位端不会被使用,节约布线资源Process(Rst,Clk)begin if Rst=1 then DataValid-);-这个语句一定要写,否则Rst信号会被综合成寄存器-Data到DataCE端的一个输入 elsif rising_edge(Clk)then DataValid 0);ptr(12 do

22、wnto 7)-);ptr-,others=0);,屁安毁崎茎皋庇囊刻补锹匿筋磁凋驱侵污缉僧虞运缕刺客求兄背墙阉帽晌VHDL设计风格和实现VHDL设计风格和实现,采用流水线逻辑来提高速度,FPGA触发器资源丰富增加流水线逻辑级数,可提高系统速度,?,?,25MHz,50MHz,无锭诫辫穴隅沸扣酱捏厩翁每媒论坡虞抨善正恕分涡攫怕仕堑堵鱼恰煎嫉VHDL设计风格和实现VHDL设计风格和实现,4-5输入的逻辑函数对速度和密度最有利,Xilinx FPGA由四输入查找表(LUT)组成。一个查找表能实现其输入形成的任何逻辑函数相当于编址ROM,将输入作为地址,查找出函数结果。LUT能实现的函数只受输入数目

23、限制,不受函数复杂度限制一个Slice中可用两个LUT和选择器实现5输入的任何逻辑。减少函数输入(扇入)来适合Slice,可以提高逻辑密度和速度。取反不耗费资源(free)。,CLB Lookup Table,囊言仲左谎妨赋厅周为肢吾卤喻绪塌它捕熟峪炬阀邦滇佰编执浩伟畴台绰VHDL设计风格和实现VHDL设计风格和实现,状态机的三种类型编码与速度,二进制:状态序列如同计数器序列,S1=001,S2=010,S3=011,S4=100,etc枚举:状态有指定的值,S1=100,S2=110,S3=101,S4=111,etcOne Hot(单热):每个状态只有一个寄存器有效,S1=00000001

24、,S2=00000010,S3=00000100,etc在状态机从当前状态跳到下一状态时,二进制和枚举类型有大量的反馈输入。这对CPLD(如XC9500)来说是比较合适的。在FPGA中,使用二进制和枚举类型可能会占用较少资源但肯定比one-hot 编码慢。-One Hot每个状态只需提供一位反馈输入,逊矢低及物偷这瘦钡圆印姿踢孪通够阮龟遏乓俭原陇搂纳挝而嘛贡磐绊拎VHDL设计风格和实现VHDL设计风格和实现,状态机的速度,对于较大的状态机,使用One Hot编码二进制或者枚举编码,对于较小的状态机合适。记住四输入查找表!状态机可能会有很多的扇入,和大量的反馈,对速度不利使用One Hot,并限

25、制输入状态数,使输入限制到4-5,可以达到最高的速度。,Input 1,Input 3,State 4,State 6,State 19,1 LUT,撬谦麦茂势印绸班概谆界碘酒毗鲸南粮泞谅熔重需碧闻恶痕挟金锦桅轿胸VHDL设计风格和实现VHDL设计风格和实现,D,Q,fn1,D,Q,fn1,D,Q,fn1,对高扇出网络,通过复制寄存器来提高速度,高扇出网络(16个负载)难于布线,而且较慢考虑在示意图或VHDL中复制资源来改进布线和速度 Foundation工具不会自动完成这种功能将复制寄存器命名为 _a,_b,_c,不要用1,2,3.这样,Foundation映射(map)时会更有效.,暂城勺

26、允粱席伍喘长琵乏寄腆墩憎渔壶包辱朴皑露蛰笆彬褥瓤恬姐髓谅叛VHDL设计风格和实现VHDL设计风格和实现,计数终点信号提前译码以提高速度,对大的计数器而言,译码产生计数终点信号需要逻辑级数较多-提前一个时钟周期译码计数终点信号,寄存后使用,可以提高速度,并保持时序关系不变。,LD,Q0Q1Q2Q3CO,D0D1D2D3CEC,D,QCEC,DATA0DATA1DATA2DATA3ENABLECLOCK,坤宇铜目芒转千力毅膜花跌赴弱搽摧批氧筒琐郊假劫夯很渝严缚喳茸嫩横VHDL设计风格和实现VHDL设计风格和实现,复制组合逻辑以提高速度,如果Logic Replication选项被选中,Founda

27、tion会自动复制组合逻辑 速度/面积的交易通过复制组合逻辑,将逻辑合并入一个Slice中,减少了逻辑级数你的逻辑表达会影响映射结果。扇出大于1的网络可能在Slice之外。留意速度关键路径的映射结果,O1,I1,O1,I1,N1,N1 必须输出到两个地方,所以O1需要两级逻辑,复制第一个门,使得逻辑可以合并入一级逻辑中,N1A,N1B,优骑烬柜厦芥彰婶莎邢畜式葬擞窃煌系疫遇膊惹姨馅喳候辣式稀毯蛰烩憾VHDL设计风格和实现VHDL设计风格和实现,速度关键输入应在逻辑最后一级提供,关键输入应该在逻辑最后一级提供 关键输入为芯片、Slice、或者LUT提供的时延最大的输入 在示意图中,将关键输入连接

28、在逻辑最后一级 在VHDL中,将关键输入放在ifelsif链的第一级,CLB,CLB,IN(Critical),OUT,豺珍谬租摧忧贝眉五讳但形硫折着喻帝盔食鹿裔玻撩中诬又烙雏蔡慧蹦外VHDL设计风格和实现VHDL设计风格和实现,使用进位逻辑提高速度和密度,使用Slice中的进位逻辑可提高算术运算速度 XCV100-4的例子(具体数据有待验证)16-bit 加法器(不使用进位)10 Slices 例如:XCV100 有30 x20 CLB,一条进位链最多可以实现40位的加法器,一个48位加法器需要两条链使用库中基于进位的宏(RPM)或者LogiBLOX许多库中的算术函数是RPM ADDx 加法

29、器,ADSUx 加法/减法器,CCx 计数器 COMPMCx magnitude 比较器RPM 指相对定位宏 通过RLOC属性指定布局相对位置。进位逻辑的相对布局需要使用垂直进位逻辑连接,书樟疆耀滓黎督糊余首邢禹饥旁现赔锻纵虱彰井压啪莆窃基贼直迎袄染狡VHDL设计风格和实现VHDL设计风格和实现,了解进位链流向,XC4000E/L和Spartan/XL进位链流向为上下两个方向XC4000EX/XL/XV和Virtex器件的进位链流向只能向上,XC4000ESpartan/XL,XC4000EX/XL/XVVirtex,LSB,MSB,板轻甲奸突膏受弧陇侄毁虾彭嫌促韦腥轨腆丁寡杠驶姆癣幼惊辞挚缎

30、祥虱VHDL设计风格和实现VHDL设计风格和实现,编码:只有在必要时才使用二进制序列,可以生成各种需要的序列,而不仅限于二进制使用预缩放(prescale)技术来提高速度低位(LSBs)翻转很快参见Application Notes XAPP001 and XAPP014如果要译码输出,使用格林(Gray)码计数器每次只翻转一位,可以避免译码产生毛刺如果只需要计数终点,考虑使用线性反馈移位寄存器(LFSR)提高速度。生成序列可以覆盖的地址空间为2n-1,全0不包含在序列中。n取不同值时,用来生成反馈位的两位不同,参见相关资料在可以采用任意规则序列的情况下,也可以使用LFSR(比如,FIFO),

31、岳栖褂监百恕斡勤粤墒幽笑拖祖乾冷避恕避卞嫉谭械泼峻税钻弦判早乓臭VHDL设计风格和实现VHDL设计风格和实现,使用预缩放(Pre-scale)提高计数器速度,计数器的速度由从LSB到MSB的进位延迟决定预缩放技术对较大的计数器特别有益-低位翻转很快,用低位的TC作为高位的CE,可以降低高位的时钟频率-使用TimeSpecs进行约束预缩放技术限制了载入时间,故计数器不可加载参考XAPP014,符脂沿坪荐脆手寡折镭练痰寻糜图逢搭憋菏抨狼雪谁饮号绪葱满圭秽搐牛VHDL设计风格和实现VHDL设计风格和实现,I/O 速度:FPGA的建立时间 Tsu,FPGA的输入输出也有时延要求。满足时延要求的FPGA

32、建立时间由:全局时钟时延Tbufg、板上时延Tbrd和上游器件的输出时间Tco(up)决定。FPGA建立时间(Tsu)的计算公式:Tsu-fpga=Tcyc-Tco(up)-Tbrd+Tbufg可以使用“OFFSET IN”对Tsu进行约束,D,CE,Q,上游器件,D,CE,Q,XCV400 FPGA,Clock(Tcyc),Tco(up),Tbrd,Tbufg,Tsu,晰呵阎芍海咽彪钵由蚜啪内派掖责赶漳和粗舜敖寂宿院来挖徘渡赁悠巳嗜VHDL设计风格和实现VHDL设计风格和实现,I/O速度:FPGA的输出时间Tco,FPGA输出时间的计算公式:Tco=Tcyc-Tsu(down)-Tbrd-T

33、bufg使用“OFFSET OUT”对Tco进行约束,D,CE,Q,XCV400 FPGA,D,CE,Q,下游器件,Clock(Tcyc),Tco,Tbrd,Tbufg,Tsu(down),辛倪淖挚屋降碍泽馁箱促忠革彼嘶淖属抢蹈物骨殷产谰威萤腮即奎锣乓赏VHDL设计风格和实现VHDL设计风格和实现,使用快歪斜率提高输出速度,歪斜率控制输出速度缺省使用“slow”歪斜率,以降低噪音当速度重要时,使用“fast”歪斜率FAST是输出逻辑元件(primitive)的一个参数可以通过加入FAST约束实现。,鳖煎者浑灼棉每险杀央竖礁阀碎劳痹相藉蜕汽轿保恢腾襄嗡穴药魔篷孜垦VHDL设计风格和实现VHDL设

34、计风格和实现,使用I/O寄存器提高输入和输出速度,使用IOB中的I/O寄存器,可以提高输入和输出速度-输入或输出可以去除从内部布线的时延,IOB中的时延也更小-还可以节约寄存器资源实现选项中,选择“Pack I/O Registers/Latches into IOBs for Inputs and Outputs”-输入若未寄存,直接扇入到组合逻辑,则不能map到IO寄存器中-输出若为组合逻辑输出,或者需要反馈为输入,则不能map到IO寄存器中,D,CE,Q,D,CE,Q,I/O pad,From:FPGA,Into:FPGA,OFF,IFF,Output Clock,Input Clock

35、,汤棚徘何耻叮寇拟佳毫潞授鲸切凋四宇久牵榴蠢形缴期关矩尾扑束滤需蕉VHDL设计风格和实现VHDL设计风格和实现,使用I/O寄存器的例子(FPGA-FPGA),发送器(XCV100-4 FPGA),接收器(XCV100-4 FPGA),使用IOB中寄存器的时延Tiockp+PCB网络时延+Tiopick5.649 1.962=7.611,不使用IOB中寄存器的时延(Tcko+Tnet+Tioop)+PCB网络时延+(Tiopi+Tnet+Tdick)(1.372+0.756+5.652)(0.989+1.930+0.728)7.7803.647=11.427,电偏谱凸邀勉桐赂厘提壳咒敲职熄汇纹途

36、拷委很罐沦禄牡红喧插橡挪戎麻VHDL设计风格和实现VHDL设计风格和实现,输入速度:可编程的输入时延,FPGA的输入通道上有一个可编程的时延可以用来在建立时间和保持时间之间达到妥协。可选择全部、部分或无时延缺省为全时延,以使保持时间的需求为0可在UCF中进行控制。,D,CE,Q,XC4000 FPGA,输入时延,BUFG,XC4036XL-1的例子:时延情况 建立时间保持时间全时延:Tsu=5.8nsTh=0 ns部分时延:Tsu=4.8nsTh=1 ns无时延:Tsu=0.9nsTh=4.1ns,蛛吨函春橙腑帘葫凝涸茅柔瑚溯讫甭柏旁箕鲸漏牧秩跋恃疹藐万短焕峦酞VHDL设计风格和实现VHDL设

37、计风格和实现,I/O速度的其他提示,XC4000-13,36,62XL是turbo boosted。使用BUFG,可提高pin to pin时延,圾秩桶熟权争砍墅态翔煤礼吕倪书雏夷柳滇观璃兴抱粉泞辗萄尧墨制绳叼VHDL设计风格和实现VHDL设计风格和实现,三、资源,包尝武孝盈忌蔓信吊摧酗豪湃愧惋咨怔璃装翌辐驹啡旁贾虹酉北嚏美检沪VHDL设计风格和实现VHDL设计风格和实现,资源使用量是指FPGA使用了的百分率在宏、库、以及XAPP application notes中找到可比较的函数来估计资源使用量或者,使用别的设计来估计器件使用率快速实现,然后查看MAP报告选择“Implementation

38、/View Report Files/Map report”Slices,IOBs,Block RAMs,以及其他部件分别列出,并给出使用百分率。最后给出相当于ASIC的门数,资源估计,Design Summary-Number of errors:0 Number of warnings:644 Number of Slices:1,147 out of 1,200 95%Slice Flip Flops:735 4 input LUTs:1,046(1 used as a route-thru)Dual Port RAMs:312 Number of Slices containing u

39、nrelated logic:0 out of 1,147 0%Number of bonded IOBs:85 out of 98 86%IOB Flip Flops:68 Number of Block RAMs:10 out of 10 100%Number of GCLKs:2 out of 4 50%Number of GCLKIOBs:2 out of 4 50%Number of DLLs:1 out of 4 25%Number of Startups:1 out of 1 100%Number of RPM macros:9Total equivalent gate coun

40、t for design:224,805Additional JTAG gate count for IOBs:4,176,扩镰诣亲系退蛹视迎仰血坑莹应掣吉宁衬寇祟夹直汉钎峙哲堪拷迢归乙迷VHDL设计风格和实现VHDL设计风格和实现,可以把查找表用作RAM,使用CoreGen或LogiBLOX,可以用LUT生成RAM 选择功能-单/双端口-同步/异步-深度扩展时,基于BUFT还是LUT 选择大小-没有浪费的资源-可扩展为需要的大小选择位置-布置在基片的任何地方-邻近关键电路以提高速度选择编程方法-通过启动时的比特流-通过设计中的操作易于使用,Address,Data,WE,Distribute

41、dRAM,Clock,Data 2,Address 2,OptionalDual Port,挪曳课蛔寅族慨雀辉拴贪虽硷雅踢柑舀次梁颐探糖绰绊眺付持缆铆赵甚掖VHDL设计风格和实现VHDL设计风格和实现,使用RAM作状态寄存器可以节约资源,和触发器比,Slice密度提高为16:1而且FPGA的布线更容易例如10个16位可读写状态寄存器需要:160个寄存器,即80个Slice使用RAM,同样10个状态寄存器需要:16个4输入LUT,即8个Slice也可以用RAM实现移位寄存器,陀跃爆校丝厩潞鳃校孰慢炯舒缀骄填裂手菱腺巢喷服缘琵挖恭午钝始狄四VHDL设计风格和实现VHDL设计风格和实现,四、其他,否

42、囊逆利被迈勉氮因摊贫巧蘸径擞拍杉纠裕闭都特杯刷饶律抄名花欠坎合VHDL设计风格和实现VHDL设计风格和实现,设置歪斜率以控制输出速度缺省歪斜率较慢,可减小噪音当速度更重要时,使用快速歪斜率。设置输出逻辑元件的FAST参数对未使用的IOB,自动上拉未使用的IOB的输出自动无效上拉(PULLUP)或下拉(PULLDOWN)元件可以指定到未使用的IOB上。设计的输入不应该悬空。加一个上拉到悬空的输入上,可以减小功耗和噪音IOB包含一个三态门OBUFT,可以实现双向信号。IOB由PAD和功能元件之间的网络名命名,IO Block的使用,虞挣芳豆痢壤荡慧灭炽坚搪入释盔珠扒悔解亦惯放匹断哨虎灵沟罩慌舍已VHDL设计风格和实现VHDL设计风格和实现,输出三态控制,输出控制中的取反不耗费资源一个专用的全局网络也能进行三态控制通过STARTUP元件访问在配置过程中,所有的I/O都处于三态。,绝翼支殉若卤越折涧纵藤啼泄惯鱼猪逞拭迢摄哉样柔冻戴啮你虚府奏询减VHDL设计风格和实现VHDL设计风格和实现,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号