EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
$ ~1 m w9 O x$ N' R" T! q9 |8 D g
【Espier FPGA VHDL学习帖】第20帖 引入寄存器技巧 常见泽 首先需要复习几个知识点: 第一:Signal与variablel 0 G- P( j) j% i, y/ ]7 U
第二:wait语句
+ [5 a/ z5 r+ S0 K6 tWAIT;-- 第一种语句格式(永远挂起)
$ X/ \2 ], ^, c& P" ?WAIT ON 信号表;-- 第二种语句格式 (信号发生变化将结束挂起)
1 Z8 A. t" d/ c9 yWAIT UNTIL 条件表达式;-- 第三种语句格式(条件表达式中的信号发生变化切满足条件是结束挂起)3 P+ N V2 T. m) f& t
WAIT FOR 时间表达式;-- 第四种语句格式, 超时等待语句(时间到结束挂起)
第三:操作符 VHDL有四类操作符:逻辑操作符、关系操作符、算术操作符、符号操作符 逻辑操作符 and or nor nand xor xnor not 如果在一个表达式中有两个以上算符,需要使用括号将这些运算分组,如果这一串运算符相同,且是AND\XOR\OR中的一种,则不需要使用括号。 其次: 高效的可综合电路的设计要求是:在么有必要时应尽量避免在电路中插入寄存器,否则既影响电路的工作速度,又占用不必要的硬件资源。 寄存器的引入通过使用WAIT和IF语句测试敏感信号边沿来实现的。 注意 (1) 一个进程中只能引入一种类型的寄存器,分为锁存器、有异步置位或复位的锁存器、触发器、有异步复位或同步置位的触发器。 (2) 引入寄存器的优选语句应该是IF语句,因为IF语句更容易控制寄存器的引入。 (3) 不要将用于产生寄存器的赋值语句放在IF(边沿)语句的ELSE条件的分支上,但可以放在ELSIF语句上。 (4) 在IF THEN或IF_THEN_ELSE语句中,只能存在一个边沿测试描述分句。也就是说一个进程综合得到的电路只能受控于一个时钟信号,并且一个同步逻辑模块(包括异步进程) 实例: and_b<= count(2) and count(1)and count(0); or_b <=count(2) or count(1)or count(0); nor_b <=count(2) xor count(1)xor count(0); 为了避免引入过多的寄存器,可将这3个输出赋值语句放在另一个没有WAIT或IF语句的进程中。 硬件描述语言: BEGIN Process --variablecount:std_logic_vector(2 downto 0); begin wait untilclock'event and clock='1'; if(rst='1')then --count:="000"; count<="000"; else --count:=count+1; count<=count+1; end if; --and_b <=count(2) and count(1)and count(0); --or_b <=count(2) or count(1)or count(0); --nor_b <=count(2) xor count(1)xor count(0); end process; process(count) begin and_b <=count(2) and count(1)and count(0); or_b <=count(2) or count(1)or count(0); nor_b <=count(2) xor count(1)xor count(0); end process; END arch; 查看结果 and_b<= count(2) and count(1)and count(0); or_b <=count(2) or count(1)or count(0); nor_b <=count(2) xor count(1)xor count(0); 3个赋值语句放在WAIT语句的进程中。
. ^/ n% b8 {7 c! `4 Y优化前:
( o3 [; y4 k: }6 t# y0 N7 G# D7 f' b) I
引入寄存器+组合电路:
1 `( C+ }$ D) e+ x( }8 j4 m$ I' d将这3个输出赋值语句放在另一个没有WAIT或IF语句的进程中。 ( R: Q' a" u1 G6 Z0 J1 P- N
可见:如果要描述一个组合电路与时序电路混合的系统,可以将描述时序的部分放在具有边沿检测条件的IF语句或者WAIT语句的进程中,而将描述组合电路的语句放在普通的进程中,这样可以有效地控制寄存器的引入。 (本帖内容摘于潘松老师的《VHDL使用教程》) * l" i9 c. [$ f6 d% P, p
|