VHDL设计风格和实现.ppt
《VHDL设计风格和实现.ppt》由会员分享,可在线阅读,更多相关《VHDL设计风格和实现.ppt(51页珍藏版)》请在沃文网上搜索。
1、VHDL 设计风格和实现,2000年6月10日 第 1 页VHDL设计风格和实现VHDL 设计风格和实现,2000年6月10日 第 2 页内容概述一、同步设计二、速度三、资源四、其他VHDL 设计风格和实现,2000年6月10日 第 3 页一、同步设计VHDL 设计风格和实现,2000年6月10日 第 4 页什么是同步设计?w同步设计:上游数据到下游逻辑单元的传递是通过时钟来同步的。-只要能满足时延要求,就可以确保下游逻辑单元能正确采样到上游数据。w异步设计:上游数据发生变化的时机是不确定的,甚至会出现中间态。-下游逻辑对上游数据的采样是不确定的,会发生数据传递的错误。VHDL 设计风格和实现
2、,2000年6月10日 第 5 页为什么要做同步设计?w两年前我做的FPGA设计,现在却不能工作。FPGA本身有什么变化吗?-如果采用的是异步设计,能否工作有很多无法控制的随机因素。w我的设计原来可以工作,但将FPGA重新布线后,就不行了。怎么回事?-异步设计也许在特定布线下能工作,但布线改变后就不行了。很危险吧?w我的设计通过了时间仿真,但上板调试时不干活。时间仿真对不对?-对于异步设计,通过了时间仿真也不一定能正常工作。w要小心,时钟信号可别产生毛刺啊。w要小心,异步复位可别有毛刺啊。w快速FPGA中的触发器会对非常窄的毛刺信号作出反应。-异步设计中,设计者老要想着去消除时钟、异步复位信号
3、以及锁存器使能端的毛刺,但这一点在异步设计中很困难,甚至不可能。异步设计可能会产生以下问题:同步设计的一个简单原则同步设计的一个简单原则:永远不要将组合逻辑产生永远不要将组合逻辑产生的信号用作时钟、异步复位的信号用作时钟、异步复位/置位。置位。VHDL 设计风格和实现,2000年6月10日 第 6 页门产生的时钟有问题w此例中,计数终点信号会产生毛刺,使用该信号作时钟会引起问题。-MSB布线更短,信号变化先到达与门。与门会“感知”到1111的中间态。由于与门为电平敏感,会输出高电平的毛刺,从而引起寄存器的误动作。布线更短此处会产生毛刺,并且与计数器的时钟无关MSB0111 1000 计数器的操
4、作为:0111 1111 1000 因为MSB更快计数器flopMSB此处的与门为电平敏感VHDL 设计风格和实现,2000年6月10日 第 7 页相应的VHDL代码signal Counter:std_logic_vector(3 downto 0);signal TC:std_logic;signal flop:std_logic;process(Clk)beginif rising_edge(Clk)thenCounter=Counter+1;end if;end process;TC=1 when Counter=“1111”else 0;-TC为组合逻辑输出process(TC)be
5、ginif rising_edge(TC)then-使用组合逻辑输出作时钟,是异步设计,禁止!flop=end if;end process;VHDL 设计风格和实现,2000年6月10日 第 8 页毛刺和同步设计u组合逻辑的毛刺通常总是存在,难于甚至无法消除u毛刺只有在异步设计中(连接到时钟、异步复位、锁存器的使能端)才存在问题u在同步设计中,由于寄存器在时钟沿才会动作,只要能满足时延要求,就能确保采样到稳定正确的结果u毛刺无法消除,但其造成的问题却可以消除采用同步设计并达到时延要求VHDL 设计风格和实现,2000年6月10日 第 9 页安全同步化异步输入一例去抖动逻辑DQR异步输入系统时
6、钟同步输入设备外围DQDQ延迟一个周期后才复位,确保D端输入脉冲至少有一个周期的宽度,没有中间态异步输入的信号变化时机和宽度不确定,有抖动(毛刺),不能直接被同步系统正确采样该逻辑确保能正确得到异步输入的上升沿。一个时钟周期内的多次电平变化被认为是抖动(毛刺),最后只得到一个上升沿。VHDL 设计风格和实现,2000年6月10日 第 10 页相应的VHDL代码signal AsynInput:std_logic;signal InputReg:std_logic;signal Delay:std_logic;signal SynInput:std_logic;process(SynInput,
7、AsynInput)beginif SynInput=1 then-此置位为寄存器信号,为同步设计,可行InputReg=0;if rising_edge(AsynInput)thenInputReg=1;end if;end process;process(Clk)beginif rising_edge(Clk)thenDelay=InputReg;SynInput=Delay;end if;VHDL 设计风格和实现,2000年6月10日 第 11 页DQ3Async RINPUTCLOCKCounterQ2Q1Q0DQ同步设计方法中TC的生成和使用对照前面异步设计中TC生成和使用的例子TC
8、VHDL 设计风格和实现,2000年6月10日 第 12 页相应的VHDL代码signal Counter: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=
9、0;end if;end if;end process;VHDL 设计风格和实现,2000年6月10日 第 13 页同步设计的更多例子(可行)DQ1DTCCounterINPUTCLOCKCounterQ0INPUTCLOCKDCEQRSDATAVHDL 设计风格和实现,2000年6月10日 第 14 页相应的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
10、then 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端,-
11、为同步设计,可行 end if;end process;VHDL 设计风格和实现,2000年6月10日 第 15 页异步设计的更多例子(禁止)DQ1Async RDTCCounter这些例子有什么问题?INPUTCLOCKCounterQ0INPUTCLOCKDCEQRSDATAVHDL 设计风格和实现,2000年6月10日 第 16 页相应的VHDL代码例2signal Counter:std_logic_vector(3 downto 0);signal TC:std_logic;signal s:std_logic;process(Clk)begin if rising_edge(Clk
12、)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(Counter,Clk)begin if Counter=“11”then-组合逻辑用作寄存器的
13、异步复位,-为异步设计,禁止!Counter=“00”;elsif rising_edge(Clk)then if INPUT=1 then Counter=Counter+1;end if;end if;end process;VHDL 设计风格和实现,2000年6月10日 第 17 页二、速度VHDL 设计风格和实现,2000年6月10日 第 18 页中间态、时延和速度w当寄存器间数据传递的时延超过一个时钟周期,下游寄存器不能在下一个时钟周期采样到本时钟周期给出的上游数据,出现错误。w当时钟来临时,寄存器输入发生变化,会采样到中间态。-建立时间不能被满足,就会采样到中间态,最后的采样结果不
14、确定。w避免采样不到和采样到中间态的方法是满足时延要求w系统中的最大时延决定了系统的速度,也决定了系统能正常工作的最大时钟频率。DCLKQCLKDQ当建立时间不够时,会采样到中间态,最后的采样结果不确定。建立时间DCLKQDCLKQVHDL 设计风格和实现,2000年6月10日 第 19 页时延中包括时钟歪斜(Skew)w下面逻辑中,数据时延很小(最大3.6ns),如果时钟歪斜较小,该逻辑可以跑200MHz以上。w由于存在时钟歪斜,Flop B到Flop C的实际时延为3.3+12.1-3.6=11.8ns,在100MHz下就不能工作。w计算速度时要考虑时钟歪斜的影响。w使用全局驱动,可以减少
15、时钟歪斜。DQINPUTCLOCKDQDQFlop C12.13.63.33.63.13.0Flop BFlop AVHDL 设计风格和实现,2000年6月10日 第 20 页时延级数怎么算?wFPGA的时延通常 布线占50%,逻辑占50%w不要忘记了时钟到输出的时间(tco,输出时间)和时钟到建立的时间(tsu,建立时间)-逻辑时延级数总会包括这两级。w还需要检查I/O的速度。DCEQRPDCEQRPVHDL 设计风格和实现,2000年6月10日 第 21 页XCV100-4的例子w3级逻辑的速度有多快?w布线时延大致可估算为与逻辑时延相等下面Slice的时延是Tilo,从F,G经过LUT输
16、出的时延DCEQDCEQ 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 VHDL 设计风格和实现,2000年6月10日 第 22 页速度估计w用逻辑时延作为网络时延的估计用逻辑时延作为网络时延的估计w已知系统的时钟频率,可以估计允许的逻辑深度已知系统的时钟频率,可以估计允许的逻辑深度和功能需求相对照,修改设计以满足性能需要。w在在50 MHz下使用下使用XCV100-4的例子的例子:时钟周期20 ns
17、一级布线时延-5 ns(Tcko+Tnet+Tick)Tcko+Tick=2.871ns允许增加时延=15 ns每增加一级的时延/1.52 ns(Tilo+Tnet)Tilo=0.738ns允许增加的级数=710 SlicesTckoTnetTiloTnetTiloTnetTickSliceSliceSliceSlice注意此Slice中使用了LUT,所以建立时间是Tick而不是Tdick,这种映射结果减少了一级布线时延VHDL 设计风格和实现,2000年6月10日 第 23 页对高扇出的网络使用全局驱动w设计中,有高扇出的时钟使能、IOB三态以及其他信号吗?w使用剩余的BUFG来驱动它们,以
18、达到更小的歪斜和更高的性能w使用BUFG,时钟和CE输入的歪斜可以小于1nsw使用BUFG的方法,实例化BUFG,将相应信号连接上去DCEQRPCE or OE or RSTINPUTCLOCKBUFGVHDL 设计风格和实现,2000年6月10日 第 24 页使用全局复位有助于提高速度w所有的触发器在上电时通过全局置位/复位(GSR)网络进行初始化w你可以通过实例化(instantiating)STARTUP 元件(primitive)访问GSR网络。断言(assert)GSR进行全局置位/复位GSR自动连接到所有CLB的触发器,使用专用的布线资源。使用GSR,可以节约通用布线资源,减小布线
19、时延,提高系统速度不要连接不要连接GSR到触发器的复位、置位输入端w任何信号(如内部信号、外部输入等)都可以连接到GSR,但该信号必须在设计中定义。w尽可能使用全局复位限制使用非全局复位的异步复位的触发器数量非全局复位会使用额外的布线资源GR/GSRGTSCLKQ1Q2Q3DoneInSTARTUPQ4VHDL 设计风格和实现,2000年6月10日 第 25 页VHDL代码中的复位u在下面的VHDL中,应该在Rst中对寄存器赋值,否则Rst信号会被综合成寄存器的CE端的一个输入。-浪费布线资源、增加逻辑级数,降低系统速度u 即使不关心寄存器的复位状态,也应该对其赋初值,可以赋初值为“-”,即“
20、Donnt care”。这样,寄存器的复位端不会被使用,节约布线资源Process(Rst,Clk)begin if Rst=1 then DataValid=0;Data(31 downto 0)-);-这个语句一定要写,否则Rst信号会被综合成寄存器 -Data到DataCE端的一个输入 elsif rising_edge(Clk)then DataValid=f(x);Data=g(y);-f(x),g(x)表示组合逻辑 end if;end process;小技巧:对于逻辑向量std_logic_vector的赋值,可以使用“()”来表示。如:signal ptr:std_logic_
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 设计 风格 实现