欢迎来到天天文库
浏览记录
ID:27710472
大小:1.35 MB
页数:54页
时间:2018-12-04
《[工学]vhdl设计方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VHDL设计中的一些问题一、VHDL源代码的综合功能相同但是编写不同的代码会产生不同的综合效果;不可能依赖软件工具去综合一个编写很差的源代码;如果能很好理解所作设计的硬件结构,则会使设计有一个良好的开端。三个重要的方面1.考虑硬件结构编写能够描述硬件拓扑结构的代码;不要编写仿真模型;2.考虑同步逻辑同步逻辑在综合、测试、仿真和布线中都比较方便;异步逻辑需要人为操作及一些扩充的仿真功能才能进行验证。(将异步逻辑划分成独立的块单元来编译。)?3.考虑RTL级描述用RTL级的描述意味着描述:寄存器的结构;电路结构;寄存器之间的功能。由编译器优化寄存器之间的逻辑,但不优化寄存器的布局。IF
2、语句的综合IF-ELSE语句隐含了一个多路选择器的硬件结构。例:IF(Aflag=‘1’)THENOutData<=A+B;ELSEOutDate<=C+D;ENDIF;多路选择器的位置取决于IF-ELSE语句的结构IF(Aflag=‘1’)THENOp1<=A;Op2<=B;ELSEOp1<=C;Op2<=D;ENDIF;OutData<=Op1+Op2;若IF语句不带ELSE,可以表示锁存VHDL语言的定义要求信号在没有被赋予新值前保持原来的值。锁存功能在硬件上实现了以上要求。例:LS373:PROCESS(ALE,ADBUS)BEGINIF(ALE=‘1’)THENABUS<
3、=ADBUS;ENDIF;ENDPROCESSLS373;一个二输入与门的设计由于没有ELSE,综合时会被默认为其他情况时:c<=c;PROCESS(a,b)BEGINIF(a=‘1’andb=‘1’)THENc<=‘1’;ENDIF;ENDPROCESS;IF-THEN-ELSIF语句IF-THEN-ELSIF语句隐含了优先级的关系,因此在电路设计中如果有优先级的要求才使用该语句;如果在没有优先级设计要求的情况下使用该语句,那么综合后的逻辑电路会比较复杂,速度较慢;例:中断优先级控制器,int0优先级最高中断优先级控制器的实现IF(int0=‘1’)THENactive(0)<=
4、‘1’;ELSIF(int1=‘1’)THENactive(1)<=‘1’;ELSIF(int2=‘1’)THENactive(2)<=‘1’;ELSEactive(3)<=‘1’;ENDIF;FOR-LOOP语句的综合FOR-LOOP语句首先进行“翻译”,然后再进行综合。PROCESS(a,b)BEGINFORiIN0to3LOOPout(i)<=a(i)ANDb(3-i);ENDLOOP;ENDPROCESS;out(0)<=a(0)ANDb(3);out(1)<=a(1)ANDb(2);out(2)<=a(2)ANDb(1);out(3)<=a(3)ANDb(0);实现奇偶校
5、验的例子PROCESS(data)VARIABLEsum:INTEGER;BEGINsum:=0;FORIIN0to7LOOP--数1的个数sum:=data(i)+sum;ENDLOOP;odd_parity<=summod2;--校验奇偶性ENDPROCESS;综合后操作符对综合结果的影响VHDL编译器对表达式从左至右进行语法分析;圆括号可以改变编译的顺序;例1:ADD<=A+B+C+D;(1)ADD<=(A+B)+(C+D);(2)综合后结果:ADD<=A+B+C+D;综合后结果:ADD<=(A+B)+(C+D);例2:SUM<=A*B+C*D+E+F+G;综合后结果:改变顺
6、序或加括号来改变结构SUM<=E+F+G+C*D+A*B;SUM<=(A*B)+((C*D)+((E+F)+G));二、可综合代码的设计特点1.比较综合和仿真的结果VHDL语言是一种硬件描述和仿真语言;一些仿真结构在综合器中不被支持;2.避免使用WAITFORxxns语句;AFTERxxns语句;信号和变量的赋初值语句;3.使用CASE和IF_ELSE语句IF_ELSE描述一个优先级编码的逻辑;CASE语句描述一种对称平衡的行为;仿真结果一致;综合出来的设计速度会有不同。4.遵循一定的编代码规则选择使用大小写字母的规则;文件名与实体名匹配;给程序添加标号、注释;使用代码缩进、空行、
7、空格等;建议使用std_logic类型;5.例子设计实现一个2-4译码器bcd(1)bcd(0)Led(3)led(2)led(1)led(0)000001010010100100111000方法一:结构描述法基于元件例化和GENERATE语句;建立层次结构;可用简单的逻辑门和复杂的元件来描述系统;互连通过端口实现。调用两个元件:与门ANDGate(调用4次)非门Inverter(调用2次)方法二:数据流描述采用并发代入语句实现;通过输入信号值的改变来激活代入语句。采
此文档下载收益归作者所有