08 2012 档案

Modelsim关于建立和保持时间的报错
摘要:保持时间不满足时,Modelsim会出现类似于以下格式的报错: $hold( posedge clk &&& nosloadsclr:171807 ps, d:172013 ps, 212 ps ); 上面想表达的意思是:在171807ps时钟沿处,要求的数据保持时间为212ps,但数据在172013ps处就翻转了,离保持时间的要求还差6ps。 $setup 和 $hold中各个数值的意义分... 阅读全文

posted @ 2012-08-29 16:08 freshair_cn 阅读(1844) 评论(0) 推荐(0)

关于FPGA的保持时间不满足
摘要:由于FPGA的布线使用的是routing matrix,通常不会出现Hold Violation的情况;如果出现hold violation了,很可能是时钟抖动引起的。… Hold delay violations are rare in FPGA designs due to the build-in delay of the routing matrix. If a hold violation occurs, it usually indicates a clock skew problem.关于routing matrix情况描述如下:An FPGA device contains f 阅读全文

posted @ 2012-08-27 15:47 freshair_cn 阅读(2922) 评论(1) 推荐(0)

系统最高时钟频率的计算
摘要:Tmin = uTco + Tdelay + uTsu – Tskew这即允许的最小时钟周期,即最高时钟频率。 阅读全文

posted @ 2012-08-27 15:19 freshair_cn 阅读(3964) 评论(0) 推荐(0)

别搞混了!assertion和deassertion
摘要:assert: set a signal to its “active” statedeassertion: set a signal to its “inactive” stateIf a signal is active-low, “asserting” it means setting it low and “deasserting” it means setting it high. 阅读全文

posted @ 2012-08-24 15:16 freshair_cn 阅读(6133) 评论(0) 推荐(0)

多时钟驱动的输入输出约束
摘要:代码比较长,还是值得一看 阅读全文

posted @ 2012-08-23 14:43 freshair_cn 阅读(499) 评论(0) 推荐(0)

关于set_clock_latency中的early和late选项
摘要:-early表示延时的可能最小值;-late 表示延时的可能最大值。例如, set_clock_latency –source –late 1.234 sys_clk set_clock_latency –source –early 1.10 sys_clk… the board-level clock delay to sys_clk can be as late as 1.234ns and as early as 1.10ns early.可见,early和late分别表示的是延时的最小值和最大值。所以像文档的说法: -early: Specifies the early clock l 阅读全文

posted @ 2012-08-23 11:12 freshair_cn 阅读(2431) 评论(0) 推荐(1)

关于JTAG信号的约束
摘要:当例化SignalTap II调试系统时,Qii会把Jtag信号当作系统信号的一部分。在TimeQuest中可以用以下方法约束Jtag信号: 阅读全文

posted @ 2012-08-22 16:28 freshair_cn 阅读(492) 评论(0) 推荐(0)

约束系统同步输出的注意事项
摘要:系统框图如下:参考的约束方法如下:以上的语法很简单,不过数值、使用方法有很大的参考价值特别注意黄色部分,在约束-max和-min时,分别使用了Tsu和Thd。 阅读全文

posted @ 2012-08-22 15:20 freshair_cn 阅读(285) 评论(0) 推荐(0)

三态门作输出时的约束方法
摘要:三态门作输出的结构如下:参考的约束方法如下: 阅读全文

posted @ 2012-08-22 15:00 freshair_cn 阅读(525) 评论(0) 推荐(0)

关于derive_clock_uncertainty
摘要:一、使命 把时钟的setup和hold uncertainty附加到每个跨时钟域里面。…This command calculates and applies setup and hold uncertainties for each clock-to-clock transfer found in the design. 时钟的uncertainty在命令update_timing_netlist之后更新。二、作用对象 反映IO口、inter-clock、intra-clock在时序分析上的uncertainty。三、对时钟的要求 虚拟时钟:可接受IO口、inter-clock、intra- 阅读全文

posted @ 2012-08-22 14:20 freshair_cn 阅读(3423) 评论(0) 推荐(0)

关于set_clock_groups
摘要:一、命令格式 set_clock_groups [-asynchronous] [-exclusive] –group <names>二、选项说明 -asynchronous :顾名思义,时钟是异步不相关的,时钟有完全不同的时钟源 -exclusive :时钟是互斥的,即时钟不会再同一时刻同时有效 实际上,这两个选项的效果是完全一样的。… TimeQuest treats both options, “-exclusive” and “-asynchronous”, as if they were the same.三、效果 这与对各个时钟使用set_false_path的效果是完 阅读全文

posted @ 2012-08-22 11:04 freshair_cn 阅读(9845) 评论(0) 推荐(0)

时序裕量计算之五:FPGA输出数据到外部的时序裕量计算
摘要:定义Output Maximum Delay(OMD)和Output Minimum Delay(OmD)。OMD定义为数据离开FPGA输出脚、到达外部触发器数据输入端的时间延迟。同理定义OmD。一、Clock Setup Slack 根据之前的结论: Clock Setup Slack = SR + Tcs(min) – uTsu – uTco – Td(max) (1) 调整如下: 1、SR不变; 2、Td为从FPGA管脚到外部寄存器输入端的路径延时; 3、Tcs为时钟到外部寄存器时钟输入端相对于时钟到FPGA时钟管脚的时钟抖动; 4、Tsu代替uTsu,Tsu是外部寄存器的clock-t 阅读全文

posted @ 2012-08-21 14:25 freshair_cn 阅读(1114) 评论(0) 推荐(0)

时序裕量计算之四:外部信号输入到FPGA的时序裕量计算
摘要:先定义两个术语:Input Maximum Delay(IMD):外部信号从被外部时钟打入外部的触发器、到该信号到达FPGA信号输入端的最大延时。同理定义Input Minimum Delay(ImD)。一、Clock Setup Slack 根据之前章节的结论,Clock Setup Slack可以表示为: Clock Setup Slack = SR + Tcs(min) – uTco – uTsu – Td(max) (1) 稍微调整一下,即可得到数据来自外部时的时序裕量计算方法。 1、SR保持不变; 2、Tcs表示到达FPGA时钟输入脚的时钟路径相对于到达外部数据触发器时钟输入端的时. 阅读全文

posted @ 2012-08-21 12:22 freshair_cn 阅读(1280) 评论(0) 推荐(0)

时序裕量计算之三:两种计算方法的比较
摘要:可以明显看到,两者的结果是一致的。一、Clock Setup Slack ASIC的结论如下:把等式稍微变换一下,stUn放到第一个括号里面,可得 Clock Setup Slack = (Latch – Launch - stUn) + (Td-D(min) – Td-S(max)) – uTsu – uTco – Td(max)(Latch – Launch - stUn)实际上就是SR,(Td-D(min) – Td-S(max))就是Tcs(min)。 这与Altera的结论是相同的:二、Clock Hold Slack ASIC的结论: Altera的结论: 稍微转换一下,可发现两者 阅读全文

posted @ 2012-08-21 10:43 freshair_cn 阅读(578) 评论(0) 推荐(0)

时序裕量计算之二:Altera计算时序裕量的方法
摘要:Altera对Clock Setup Slack和Clock Hold Slack的定义的切入面稍有不同。一、Clock Setup Slack 参照前言的图,定义一个符号SR,SR表示 Clock Setup Relationship。 SR = Latch – Launch – stUn (1) 其中,Latch为Setup Latch Edge,Launch为Setup Launch Edge,考虑最坏的情况,Setup时Latch左偏。 看上图的r2r,r2r表示数据从某寄存器输入到另一寄存器输入的延时,实际上即Td。 可以用以下方法推导r2r的计算: Launch + uTco + 阅读全文

posted @ 2012-08-20 18:29 freshair_cn 阅读(891) 评论(0) 推荐(0)

时序裕量计算之一:ASIC时序裕量计算的一般方法
摘要:一、Clock Setup Slack Data Arrival Time 简记为 DataA; Data Required Time 简记为 DataR;其他的类似,例如clkA。 Clock Setup Slack = DataR – DataA; (1) DataA = Launch + uTco + Td-S + Td; (2) 其中,Launch 为 Launch Edge; uTco 为内部寄存器 clock-to-output 时间;Td-S为时钟源到源端的时钟延迟,S表示Source;Td某寄存器输出端到另一寄存器输入端的路径延时。 DataR = clkA – uTsu – 阅读全文

posted @ 2012-08-20 17:33 freshair_cn 阅读(6118) 评论(0) 推荐(0)

时序裕量计算之前言
摘要:先看一幅图:注意 Clock Hold Latch Edge 和 Clock Hold Launch Edge 的关系。Hold Check检查的是,在Hold Latch处引起的数据保持时间,会不会超过Hold Launch处的数据打出时间,从而把数据“冲”掉? 对于源寄存器和目的寄存器,对Slack有影响的各自属性如下图: Source ----> Destination uTco uTsu/uThd 本文参考了国外一篇匿名文档的思路,在此向作者表示感谢和敬意。 阅读全文

posted @ 2012-08-20 16:09 freshair_cn 阅读(452) 评论(0) 推荐(0)

Altera Coding Style 之 加法器
摘要:根据器件结构的不同选择不同的风格。…Using a pipelined binary or ternary adder tree appropriately can greatly improve the quality of your results.简单地说,要根据LE进位链的数目决定用多少个加数。例如,对于 4-input LUT,举例如下:对于 6-input LUT,… ALMs can simultaneously add three bits.举例如下: 阅读全文

posted @ 2012-08-17 11:58 freshair_cn 阅读(477) 评论(0) 推荐(0)

Altera Coding Style 之 时钟切换
摘要:一般来说,时钟切换有3种手段:1、器件本身有硬件结构支持切换 … For example, you can use the Clock Switchover feature or the Clock Control Block available in certain Altera devices.2、使用动态PLL … Many Altera devices also support dynamic PLL reconfiguration, which is the safest and most robust method of changing clock rates during de 阅读全文

posted @ 2012-08-16 18:38 freshair_cn 阅读(832) 评论(0) 推荐(0)

Altera Coding Style 之 CRC
摘要:一、CRC的实现方法对于一个比特串,假如要生成 n-bit 的CRC,那么CRC的多项式用(n+1)位表示。生成CRC的步骤如下:1、比特串后面附加n个0;2、(n+1)与比特串最左对齐,做异或;3、(n+1)逐比特右移,并异或;4、直至原比特串全部为0,剩下的n比特即为CRC。校验CRC的方法是:1、CRC附于收到的比特串后面;2、(n+1)异或、移位;3、最后结果,如果包含附加CRC之后的比特串为0,证明传输无误。二、硬件实现CRC的建议 由于异或门天生的缺陷,在硬件实现CRC时,会出现一些与常用处理方法相反的的建议。 … XOR gates have a cancellation pro 阅读全文

posted @ 2012-08-16 17:41 freshair_cn 阅读(453) 评论(0) 推荐(0)

Altera Coding Style 之 比较器
摘要:一、两种情况比较器的使用可以归类为2种情况:== 和 <。不等于和大于实际上只是上述的一个反运算。… The == comparator is implemented in general logic cells. The < comparator can be implemented using the carry chain or general logic cells.==会综合成组合逻辑,<可能综合成组合逻辑,也可能综合成进位链。二、优劣比较独立测试时,进位链会比组合逻辑快;但是在大的工程当中,由于约束的关系,进位链的结构有时反而显得慢。对于 6-input 的ALU 阅读全文

posted @ 2012-08-16 15:59 freshair_cn 阅读(346) 评论(0) 推荐(0)

Altera Coding Style 之 计数器
摘要:For the best area utilization, ensure that the up/down control or controls are expressed in terms of one addition instead of two separate addition operators.当然,构造计数器的时候都会希望这样,但是不好的编码风格可能导致不一样的结果。1、不好的风格out <= count_up ? out + 1 : out –1;这会综合出2个独立的进位链2、推荐的风格out <= out + ( out_up ? 1 : -1 );这只需要 阅读全文

posted @ 2012-08-16 13:26 freshair_cn 阅读(286) 评论(0) 推荐(0)

Altera Coding Style 之多路选择器
摘要:根据代码风格,基本上会综合出3类Mux。一、MUX分类1、Binary Mux 这是最常见的一类,选择变量用普通的二进制递增的方式枚举。 case (sel) 2’b00 : z = a; 2’b01 : z = b; 2’b10 : z = c; 2’b11 : z = d; endcase 如果配合器件的结构来描述 Binary Mux,综合后的效果会很优越。 Stratix 系列里面 Stratix II以上的器件,LUT结构是 6-input LUT。这样的结构用来构造 4:1 的 Binary Mux 是非常合适的。 对于 4-input LUT,4:1 的 Binary Mux会被 阅读全文

posted @ 2012-08-14 18:29 freshair_cn 阅读(1000) 评论(0) 推荐(0)

Altera Coding Style 之状态机
摘要:Quartus II把某段代码识别为状态机是有一些约束条件的,关键是让综合工具“认识”你的代码。…Ensuring that your synthesis tools recognize a piece of code as a state machine …一、建议做法1、保证分支完备。 Assign default values to outputs derived from the state machine so that synthesis does not generate unwanted latches.2、状态机代码尽量保持独立,与其他逻辑分开写。 Separate the 阅读全文

posted @ 2012-08-14 16:04 freshair_cn 阅读(719) 评论(0) 推荐(0)

Altera Coding Style 之 Latch
摘要:一、意料之外产生的 Latch1、产生原因 在有判断的组合逻辑中,分支不完整。例如,在Case和If的结构中,分支不完备,就有可能产生Latch。 Latches have limited support in formal verification tools. Therefore, ensure that you do not infer latches unintentionally.2、避免方法 最好的方法是保证分支完备。 为避免分支不完备,可以使用 full_case 属性。full_case 属性把未声明的分支看作 don’t care,不过 full_case 属于 synthe 阅读全文

posted @ 2012-08-13 14:52 freshair_cn 阅读(906) 评论(0) 推荐(0)

Altera Coding Style 之次要控制信号的优先级
摘要:这句话很重要:To make the most efficient use of the signals in the device, your HDL code should match the device architecture as closely as possible.而且,这些信号一般来说是有优先级的,在使用时要注意这点。Altera的器件的控制信号的优先级排序如下:(1)Asynchronous Clear, aclr(2)preset,这个只在MAX3000和MAX7000系列中有(3)Asynchronous Load, aload(4)Enable, ena(5)Syn 阅读全文

posted @ 2012-08-13 11:30 freshair_cn 阅读(263) 评论(0) 推荐(0)

Altera Coding Style之上电初值
摘要:1、reg上电后的初值均为0;如果程序里面给reg赋的初值为1,Qii会在reg的输出脚增加一个 NOT gate push-back,这样reg的初值还是0,但是外界看来就是1了;2、若程序代码综合出了preset,由于新器件一般都没有preset这个脚了,preset会与复位一起,优化为作用于CLR脚上;如果器件不同时支持 power-up 和 reset 这两种异步复位方式,而代码里面这样写了,并且这两种复位方式的输出不一致,那么在综合过程中,power-up 的值会被忽略掉;3、Altera建议,在上电之后,用外部的 reset 复位一下系统。 阅读全文

posted @ 2012-08-13 11:07 freshair_cn 阅读(343) 评论(0) 推荐(0)

Altera 建议的使用preset的方法
摘要:dffeveri.vmodule dffeveri (q, d, clk, ena, rsn, prn);// port declarationinput d, clk, ena, rsn, prn;output q;reg q;always @ (posedge clk or negedge rsn or negedge prn) begin//asynchronous active-low preset if (~prn) begin if (rsn) q = 1'b1; else q... 阅读全文

posted @ 2012-08-10 16:39 freshair_cn 阅读(390) 评论(0) 推荐(0)

使用差分信号管脚附近的普通管脚
摘要:当报告管脚靠得太近的Error时,可以用以下方法解决: 阅读全文

posted @ 2012-08-10 11:59 freshair_cn 阅读(217) 评论(0) 推荐(0)

小数分频的实现方法
摘要:一、推导假设分频系数为K,K可表示为 同时K亦可写成这样的格式:其中,M是输入脉冲个数,P是输出脉冲个数。令,那么M可以表示为:以上即是小数分频器的一种实现方法。即在次N分频时,额外多输出X个脉冲。二、原理图分析通过控制逻辑模块的输出a,使在次分频中有X次(N+1)分频。其中a为1时为N分频,a为0时为(N+1)分频。如此,当Fo输出个脉冲时,Fi输入了 个脉冲。三、举例为了防止相位抖动,可采用“均匀”法将两种分频混合均匀,即把多出来的X个脉冲均匀分散开;当然也可以把同分频系数的脉冲一次性输出。事实上,后一种方法实现起来会简单一点。下面以1位小数和2位小数为例,介绍方法如下:1、若为1位小数, 阅读全文

posted @ 2012-08-09 16:50 freshair_cn 阅读(5472) 评论(0) 推荐(0)

对Clock Slack的手术式分析
摘要:一、Clock Slack的真正含义虽然文档强调的两个时钟域之间的关系,但是时序分析关注的还是时钟与数据的关系,在这里,关注的是采样时钟Latch Clock对数据的setup time和 hold time。Clock Slack代表的是对采样时钟速率、质量的容忍程度,借由对数据的裕量来衡量。二、Clock Setup Check先看计算公式:若Latch能采样到有效数据,数据出现的最晚时间即为Data Required Time,数据出现的实际时间为Data Arrival Time。若希望Latch能采样到数据,前者一定要大于后者。在评估内部寄存器输出到器件输出端口或者器件输入端口到内部 阅读全文

posted @ 2012-08-03 18:29 freshair_cn 阅读(1710) 评论(0) 推荐(1)

导航