| 
x
EDA365欢迎您登录!您需要 登录 才可以下载或查看,没有帐号?注册  在HDL的循环语句中,在指定的循环过程中,其代码块(循环体)输出同名信号,则构成顺序-循环(SAS-LOOP),其代码块(循环体)输出不同名信号,则构成并发-循环(CAS-LOOP)。   包括循环语句(含循环体)组成的代码块,EDA称为循环框架(Loop Frame)。   8 u: k! @# m" }0 _& [
 在这里,HDL循环语句与算法语言的循环语句的差异: 1.HDL的循环变量i是以常量进入循环体。算法语言则是以变量进入循环体。 2.HDL的循环体并不被循环执行,而是被重复描述(多次重复综合),从而实现建模的效率。算法语言的循环体则一定是被循环执行。   循环语句可综合性的“数学归纳法”   数学归纳法常用于证明数学序列,它的要点是: 1.首先证明序列的基数成立 2.假设序列为N时成立 3.证明序列的N+1成立   HDL的循环语句是否可综合,可以借用这个方法: 1.首先将循环语句的循环次数修改为一个很小的基数。由于在很小的基数时,其电路一定可以用结构化方法直接描述(不使用循环语句) 2.将基数加1,仍然可以是结构化描述,并加以验证 3.将基数修改为LPM参数可定制,使用循环语句描述,并加以验证 4.修改LPM定制参数,将其加1,观察其综合结果(验证)   通过以上步骤,可以证明所编写的HDL循环语句是可综合的,并且具有很高的综合效率。   循环语句设计例子:具有64个输入端口的8位异或电路: 使用“数学归纳法”为其使用循环语句建模和验证: 1.将基数(端口数)设定为4,得到: - [, k3 k  `; \
  RTL视图(验证过程):  9 U8 t5 C9 b# Y1 }8 u' N
 2.将基数加1,这里将端口数修改为8,得到:     RTL视图(验证过程):  ) Q9 l, Z, @2 @
 修改为端口数可定制的LPM模型 其RTL视图: # r$ N2 J+ l* b" Z: \( _
    现在将LPM的基数+1(修改端口指数PortNum_Power为4)  # u8 c& x, L- U4 K
 其RTL视图:  1 z3 `/ _2 ^+ S- U9 _: z* {% M+ a3 o
 以上就是循环语句构成二叉树异或门的过程,为了得到最终结果(64端口),将端口指数PortNum_Power=6,得到: " R" R% o: j+ m% Q. V5 o
 这里由于端口数过多,EDA的自动绘图需要中间过程,故首层仅展示如上部分。! K) C/ Z# }  o/ Y; Y7 Q( o
     循环语句可综合性的设计例子二:同步计数器的结构化设计   1.顶层框图   % y  L* \$ a3 I1 Y
 . {" V* N  O% Z1 I7 P
     2.代码和代码模型分析  - U% a* C! P' z% q
 其RTL视图: 以上视图中,当rst_n=0时,多路器指向常数0;当rst_n=1时,多路器指向加法器的输出;注意加法器是寄存器的输出q与1相加。2 U% s6 P# O2 W* l1 s1 O3 w8 w: j
   根据代码模型和RTL视图,可以得到等效节点模型:   若将复位信号的条件语句描述屏蔽,则得到RTL视图更接近节点等效:  * \& Q) C# H# w: @3 p0 a
 3.计数器的数学模型   在RTL视图中,计数器有限自动机的加法器执行q+1(的描述),其真实的电路是得到优化和简化的一个数学模型: 若Q序列表示为: 在时钟离散时刻,Q的变化为: |  | 1 `8 r6 d! z3 U7 M 
 |  |  |  | 0000_0000 | & F/ X- V* ~1 o, B% Y& _; P+ S9 F
 |  |  | 0000_0001 | " P& ?2 _( @5 S! k. a
 |  |  | 0000_0010 | 3 c7 r" f  N/ N) @" H2 j
 |  |  | 0000_0011 | * h+ O* w3 h! _2 q* o
 |  |  | 0000_0100 | # j. |' o2 J$ m( [) S' E
 |  |  | 0000_0101 | - t2 q% c! d  f; Q& u+ B. u
 |  |  | 0000_0110 | + F9 d% C# R% m0 _- ~( `: e5 T
 |  |  | 0000_0111 | ) i1 t9 w7 y7 e" ^) s
 |  |  | …… | 8 d% Z  v( d/ T
 |  |  | 1111_1111 | 5 E% Y8 A/ z8 {3 F8 L4 K9 n
 | 
   观察表格,能够发现Q的每一个比特位翻转的规律:  ()  (, )  (, ) ……  (, )   将触发翻转的条件(前级全部为1)采用级联以减少面积:  (,)  (, )  (, ) ……  (, )  式中:         …….   注意位翻转的一般表达式: (, ) 其真值表为: | + ]- m' ^; n7 g) ?
 | , E, h/ y6 c3 F
 | / L- \, D0 S* _+ |2 {2 z$ ]
 |  |  |  |  |  | 0 [/ U( P- ~" h5 T' E) Y
 |  |  |  |  | . R6 H* l5 ]3 ~, p9 @2 i8 x
 |  |  |  |  | : X6 s/ H# r, v3 {
 |  |  |  |  | 9 U- D/ l1 I& R* U
 | 
 其SOP为:     代入序列中,得到:       ……   根据数学模型得到的代码模型为: |