找回密码
 注册
关于网站域名变更的通知
查看: 425|回复: 3
打印 上一主题 下一主题

循环语句的可综合性

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-8-10 09:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

在HDL的循环语句中,在指定的循环过程中,其代码块(循环体)输出同名信号,则构成顺序-循环(SAS-LOOP),其代码块(循环体)输出不同名信号,则构成并发-循环(CAS-LOOP)。

包括循环语句(含循环体)组成的代码块,EDA称为循环框架(Loop Frame)。


/ X6 y& w. Y3 o5 T( v9 b

在这里,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,得到:

- o; p. E' P* k% j7 A/ l" s1 a) w

RTL视图(验证过程):


& t8 {# [( o* U: l  ]/ O8 i& Y

2.将基数加1,这里将端口数修改为8,得到:

RTL视图(验证过程):


$ W# _1 A1 \" [; }! C+ D8 O" f9 ^

修改为端口数可定制的LPM模型

其RTL视图:

. a7 ^8 E9 {2 P9 N  D

现在将LPM的基数+1(修改端口指数PortNum_Power为4)


5 ~0 w' D9 r! i8 d- j- g/ G

其RTL视图:

3 b; W! \, I4 Y/ m/ Z3 Y

以上就是循环语句构成二叉树异或门的过程,为了得到最终结果(64端口),将端口指数PortNum_Power=6,得到:

8 t2 o, T' N# a& S/ S

这里由于端口数过多,EDA的自动绘图需要中间过程,故首层仅展示如上部分。) L  h4 m0 H6 b& N- ], N; h

循环语句可综合性的设计例子二:同步计数器的结构化设计

1.顶层框图

% b8 O7 L" N1 w


( C9 I! P( R$ V8 R: R

2.代码和代码模型分析


2 l/ r4 U$ b# C0 P% x7 K0 N

其RTL视图:

以上视图中,当rst_n=0时,多路器指向常数0;当rst_n=1时,多路器指向加法器的输出;注意加法器是寄存器的输出q与1相加。
( F4 D4 k6 D8 I; O

根据代码模型和RTL视图,可以得到等效节点模型:

若将复位信号的条件语句描述屏蔽,则得到RTL视图更接近节点等效:

6 u4 ?" h2 B% M  D" l: _4 C

3.计数器的数学模型

在RTL视图中,计数器有限自动机的加法器执行q+1(的描述),其真实的电路是得到优化和简化的一个数学模型:

若Q序列表示为:

在时钟离散时刻,Q的变化为:

时钟节拍


% |" d( C+ E" @% I, L) ^

说明

0

0000_0000


' A: y# @& C3 Y

1

0000_0001

$ v4 C+ i8 _. j% u

2

0000_0010

# J3 A# t1 m- \% p

3

0000_0011

* D4 V" Q& }. J( j" W3 K7 Y& C7 l

4

0000_0100


$ C) h- ]+ ?* T' _1 R9 q& m, [% n9 W; G

5

0000_0101

1 V% Q0 c2 ^; L, n1 j

6

0000_0110


, q  T" |: U6 B) U. M* J9 c) d

7

0000_0111


' E. a% |7 ?) h7 b% O$ Z; P7 D+ w5 ~

……

……


! e3 E% D  H; x2 N2 D! w

255

1111_1111

8 a6 \, i! r; e/ r) V

观察表格,能够发现Q的每一个比特位翻转的规律:

()

(, )

(, )

……

(, )

将触发翻转的条件(前级全部为1)采用级联以减少面积:

(,)

(, )

(, )

……

(, )

式中:

…….

注意位翻转的一般表达式: (, )

其真值表为:


4 Y$ |1 z4 V7 I4 ]! y
0 S! w* G# ~- m4 W/ D# e9 o/ X

: Q5 z: E. r9 }. q4 U

说明

0

0

0

3 G1 h9 F' i$ X7 o& I' V

0

1

1


& }' J/ D+ p; Z5 Z. e, }/ u/ c

1

0

1


9 J# A5 W% H( a- r$ w

1

1

0

) Z* v7 J7 `+ d4 ?7 r: T6 T

其SOP为:

代入序列中,得到:

……

根据数学模型得到的代码模型为:

该用户从未签到

2#
发表于 2021-8-10 10:35 | 只看该作者
HDL的循环变量i是以常量进入循环体。算法语言则是以变量进入循环体。
3 U& Z  ^) u* W" q. W' m

该用户从未签到

3#
发表于 2021-8-10 10:58 | 只看该作者

在HDL的循环语句中,在指定的循环过程中,其代码块(循环体)输出同名信号,则构成顺序-循环(SAS-LOOP),其代码块(循环体)输出不同名信号,则构成并发-循环(CAS-LOOP)。

包括循环语句(含循环体)组成的代码块,EDA称为循环框架(Loop Frame)。


* @- N) A* K+ V6 l7 \  }3 L

该用户从未签到

4#
发表于 2021-8-10 11:22 | 只看该作者
循环语句的可综合性
: K# _; q( w2 R, ?. }) u
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-4 18:48 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表