版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VHDL设计中的一些问题VHDL设计中的一些问题1一、VHDL源代码的综合功能相同但是编写不同的代码会产生不同的综合效果;不可能依赖软件工具去综合一个编写很差的源代码;如果能很好理解所作设计的硬件结构,则会使设计有一个良好的开端。一、VHDL源代码的综合功能相同但是编写不同的代码会产生不2三个重要的方面1.考虑硬件结构编写能够描述硬件拓扑结构的代码;不要编写仿真模型;三个重要的方面1.考虑硬件结构32.考虑同步逻辑同步逻辑在综合、测试、仿真和布线中都比较方便;异步逻辑需要人为操作及一些扩充的仿真功能才能进行验证。(将异步逻辑划分成独立的块单元来编译。)?2.考虑同步逻辑同步逻辑在综合、测试、仿真和布线中都比较方43.考虑RTL级描述用RTL级的描述意味着描述:寄存器的结构;电路结构;寄存器之间的功能。由编译器优化寄存器之间的逻辑,但不优化寄存器的布局。3.考虑RTL级描述用RTL级的描述意味着描述:5IF语句的综合IF-ELSE语句隐含了一个多路选择器的硬件结构。例:IF(Aflag=‘1’)THENOutData<=A+B;
ELSEOutDate<=C+D;
ENDIF;IF语句的综合IF-ELSE语句隐含了一个多路选择器的硬件结6多路选择器的位置取决于IF-ELSE语句的结构
IF(Aflag=‘1’)THENOp1<=A;Op2<=B;
ELSEOp1<=C;Op2<=D;
ENDIF;OutData<=Op1+Op2;多路选择器的位置取决于IF-ELSE语句的结构IF7若IF语句不带ELSE,可以表示锁存VHDL语言的定义要求信号在没有被赋予新值前保持原来的值。锁存功能在硬件上实现了以上要求。例:LS373:PROCESS(ALE,ADBUS)
BEGIN
IF(ALE=‘1’)THENABUS<=ADBUS;
ENDIF;
ENDPROCESSLS373;若IF语句不带ELSE,可以表示锁存VHDL语言的定义要求信8一个二输入与门的设计由于没有ELSE,综合时会被默认为其他情况时:c<=c;
PROCESS(a,b)
BEGIN
IF(a=‘1’andb=‘1’)THENc<=‘1’;
ENDIF;ENDPROCESS;一个二输入与门的设计由于没有ELSE,综合时会被默认为其他情9IF-THEN-ELSIF语句IF-THEN-ELSIF语句隐含了优先级的关系,因此在电路设计中如果有优先级的要求才使用该语句;如果在没有优先级设计要求的情况下使用该语句,那么综合后的逻辑电路会比较复杂,速度较慢;例:中断优先级控制器,int0优先级最高IF-THEN-ELSIF语句IF-THEN-ELSIF语句10中断优先级控制器的实现
IF(int0=‘1’)THENactive(0)<=‘1’;
ELSIF(int1=‘1’)THENactive(1)<=‘1’;
ELSIF(int2=‘1’)THENactive(2)<=‘1’;
ELSEactive(3)<=‘1’;
ENDIF;中断优先级控制器的实现IF(int0=‘1’)11[工学]VHDL设计方法课件12FOR-LOOP语句的综合FOR-LOOP语句首先进行“翻译”,然后再进行综合。PROCESS(a,b)
BEGIN
FORiIN0to3LOOPout(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);FOR-LOOP语句的综合FOR-LOOP语句首先进行“翻译13实现奇偶校验的例子
PROCESS(data)
VARIABLEsum:INTEGER;
BEGINsum:=0;
FORIIN0to7LOOP--数1的个数
sum:=data(i)+sum;
ENDLOOP;odd_parity<=summod2;--校验奇偶性
ENDPROCESS;实现奇偶校验的例子PROCESS(data)14综合后综合后15操作符对综合结果的影响VHDL编译器对表达式从左至右进行语法分析;圆括号可以改变编译的顺序;例1:ADD<=A+B+C+D;(1)ADD<=(A+B)+(C+D);(2)操作符对综合结果的影响VHDL编译器对表达式从左至右进行语法16综合后结果:
ADD<=A+B+C+D;综合后结果:ADD<=A+B+C+D;17综合后结果:
ADD<=(A+B)+(C+D);综合后结果:ADD<=(A+B)+(C+D);18例2:
SUM<=A*B+C*D+E+F+G;综合后结果:例2:19改变顺序或加括号来改变结构SUM<=E+F+G+C*D+A*B;SUM<=(A*B)+((C*D)+((E+F)+G));改变顺序或加括号来改变结构SUM<=E+F+G20二、可综合代码的设计特点1.比较综合和仿真的结果VHDL语言是一种硬件描述和仿真语言;一些仿真结构在综合器中不被支持;二、可综合代码的设计特点1.比较综合和仿真的结果212.避免使用WAITFORxxns语句;AFTERxxns语句;信号和变量的赋初值语句;2.避免使用WAITFORxxns语句;223.使用CASE和IF_ELSE语句IF_ELSE描述一个优先级编码的逻辑;CASE语句描述一种对称平衡的行为;仿真结果一致;综合出来的设计速度会有不同。3.使用CASE和IF_ELSE语句IF_ELSE描述一个234.遵循一定的编代码规则选择使用大小写字母的规则;文件名与实体名匹配;给程序添加标号、注释;使用代码缩进、空行、空格等;建议使用std_logic类型;4.遵循一定的编代码规则选择使用大小写字母的规则;245.例子设计实现一个2-4译码器bcd(1)bcd(0)Led(3)led(2)led(1)led(0)0000010100101001001110005.例子设计实现一个2-4译码器bcd(1)bcd(025方法一:结构描述法基于元件例化和GENERATE语句;建立层次结构;可用简单的逻辑门和复杂的元件来描述系统;互连通过端口实现。方法一:结构描述法基于元件例化和GENERATE语句;26调用两个元件:与门ANDGate(调用4次)非门Inverter(调用2次)调用两个元件:与门ANDGate(调用4次)27方法二:数据流描述采用并发代入语句实现;通过输入信号值的改变来激活代入语句。方法二:数据流描述采用并发代入语句实现;28采用并发代入语句;采用并发代入语句;29方法三:行为描述法描述的是电路的功能,而不是电路的结构;采用PROCESS和CASE语句;方法三:行为描述法描述的是电路的功能,而不是电路的结构;30[工学]VHDL设计方法课件31三、FPGA中的一些设计方法竞争和冒险现象清除和置位信号触发器和锁存器同步设计延时电路的产生多时钟系统三、FPGA中的一些设计方法竞争和冒险现象321.竞争和冒险信号在FPGA中传送会有不一样延迟;当多个输入信号同时发生变化时,其组合逻辑就可能发生“毛刺”;毛刺会向下一级传送;毛刺会影响电路的稳定性。1.竞争和冒险信号在FPGA中传送会有不一样延迟;33“毛刺”的例子“毛刺”的例子34解决毛刺问题的方法改变设计:比如采用格雷码计数器代替普通的二进制计数器,因为格雷码计数器的输出每次只有一位跳变;采用同步电路:毛刺在时钟的上升沿不能形成有效的操作;采用对毛刺不敏感的D触发器输出信号;解决毛刺问题的方法改变设计:比如采用格雷码计数器代替普通的二35[工学]VHDL设计方法课件362.清除和置位信号清除和置位信号对毛刺很敏感;有时可以使用同步置位的方法来代替异步清零。2.清除和置位信号清除和置位信号对毛刺很敏感;37[工学]VHDL设计方法课件38[工学]VHDL设计方法课件393.触发器和锁存器触发器在时钟沿锁存数据;锁存器是用电平来锁存数据;建议尽量使用触发器。3.触发器和锁存器触发器在时钟沿锁存数据;40[工学]VHDL设计方法课件41锁存器锁存器424.同步设计异步设计不是总能满足建立和保持时间的要求;异步设计常常会将错误的数据锁存到触发器中;导致触发器出现亚稳态,不能识别1或0;尽量采用同步设计,以全局时钟为基准。4.同步设计异步设计不是总能满足建立和保持时间的要求;43FPGA中的时钟树FPGA中的时钟树44FPGA中的时钟树全局时钟为布局布线的延时参数提取、分析提供了基准;如果不使用时钟树的时钟,则延时数据将不准确;设计中应注意以全局时钟为参考。FPGA中的时钟树全局时钟为布局布线的延时参数提取、分析提供45分频器的例子(不规范)分频器的例子(不规范)46[工学]VHDL设计方法课件47分频器的例子(正确)分频器的例子(正确)48clkShift_regclkShift_reg495.延时电路的产生有时候需要对信号进行延时处理来适应外接端口的时序关系;可综合的延时方法有:使信号通过逻辑门(如非门);使用器件提供的延时单元;可采用移位寄存器来实现延时;5.延时电路的产生有时候需要对信号进行延时处理来适应外接端50延时电路的例子延时电路的例子516.多时钟系统有些系统要求在一个PLD内部采用多时钟,如两个异步微处理器之间的连接;两个时钟之间需要有附加的定时约束条件,将某些异步信号同步化。6.多时钟系统有些系统要求在一个PLD内部采用多时钟,如两52多时钟系统例子多时钟系统例子53多时钟系统同步化多时钟系统同步化54
VHDL设计中的一些问题VHDL设计中的一些问题55一、VHDL源代码的综合功能相同但是编写不同的代码会产生不同的综合效果;不可能依赖软件工具去综合一个编写很差的源代码;如果能很好理解所作设计的硬件结构,则会使设计有一个良好的开端。一、VHDL源代码的综合功能相同但是编写不同的代码会产生不56三个重要的方面1.考虑硬件结构编写能够描述硬件拓扑结构的代码;不要编写仿真模型;三个重要的方面1.考虑硬件结构572.考虑同步逻辑同步逻辑在综合、测试、仿真和布线中都比较方便;异步逻辑需要人为操作及一些扩充的仿真功能才能进行验证。(将异步逻辑划分成独立的块单元来编译。)?2.考虑同步逻辑同步逻辑在综合、测试、仿真和布线中都比较方583.考虑RTL级描述用RTL级的描述意味着描述:寄存器的结构;电路结构;寄存器之间的功能。由编译器优化寄存器之间的逻辑,但不优化寄存器的布局。3.考虑RTL级描述用RTL级的描述意味着描述:59IF语句的综合IF-ELSE语句隐含了一个多路选择器的硬件结构。例:IF(Aflag=‘1’)THENOutData<=A+B;
ELSEOutDate<=C+D;
ENDIF;IF语句的综合IF-ELSE语句隐含了一个多路选择器的硬件结60多路选择器的位置取决于IF-ELSE语句的结构
IF(Aflag=‘1’)THENOp1<=A;Op2<=B;
ELSEOp1<=C;Op2<=D;
ENDIF;OutData<=Op1+Op2;多路选择器的位置取决于IF-ELSE语句的结构IF61若IF语句不带ELSE,可以表示锁存VHDL语言的定义要求信号在没有被赋予新值前保持原来的值。锁存功能在硬件上实现了以上要求。例:LS373:PROCESS(ALE,ADBUS)
BEGIN
IF(ALE=‘1’)THENABUS<=ADBUS;
ENDIF;
ENDPROCESSLS373;若IF语句不带ELSE,可以表示锁存VHDL语言的定义要求信62一个二输入与门的设计由于没有ELSE,综合时会被默认为其他情况时:c<=c;
PROCESS(a,b)
BEGIN
IF(a=‘1’andb=‘1’)THENc<=‘1’;
ENDIF;ENDPROCESS;一个二输入与门的设计由于没有ELSE,综合时会被默认为其他情63IF-THEN-ELSIF语句IF-THEN-ELSIF语句隐含了优先级的关系,因此在电路设计中如果有优先级的要求才使用该语句;如果在没有优先级设计要求的情况下使用该语句,那么综合后的逻辑电路会比较复杂,速度较慢;例:中断优先级控制器,int0优先级最高IF-THEN-ELSIF语句IF-THEN-ELSIF语句64中断优先级控制器的实现
IF(int0=‘1’)THENactive(0)<=‘1’;
ELSIF(int1=‘1’)THENactive(1)<=‘1’;
ELSIF(int2=‘1’)THENactive(2)<=‘1’;
ELSEactive(3)<=‘1’;
ENDIF;中断优先级控制器的实现IF(int0=‘1’)65[工学]VHDL设计方法课件66FOR-LOOP语句的综合FOR-LOOP语句首先进行“翻译”,然后再进行综合。PROCESS(a,b)
BEGIN
FORiIN0to3LOOPout(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);FOR-LOOP语句的综合FOR-LOOP语句首先进行“翻译67实现奇偶校验的例子
PROCESS(data)
VARIABLEsum:INTEGER;
BEGINsum:=0;
FORIIN0to7LOOP--数1的个数
sum:=data(i)+sum;
ENDLOOP;odd_parity<=summod2;--校验奇偶性
ENDPROCESS;实现奇偶校验的例子PROCESS(data)68综合后综合后69操作符对综合结果的影响VHDL编译器对表达式从左至右进行语法分析;圆括号可以改变编译的顺序;例1:ADD<=A+B+C+D;(1)ADD<=(A+B)+(C+D);(2)操作符对综合结果的影响VHDL编译器对表达式从左至右进行语法70综合后结果:
ADD<=A+B+C+D;综合后结果:ADD<=A+B+C+D;71综合后结果:
ADD<=(A+B)+(C+D);综合后结果:ADD<=(A+B)+(C+D);72例2:
SUM<=A*B+C*D+E+F+G;综合后结果:例2:73改变顺序或加括号来改变结构SUM<=E+F+G+C*D+A*B;SUM<=(A*B)+((C*D)+((E+F)+G));改变顺序或加括号来改变结构SUM<=E+F+G74二、可综合代码的设计特点1.比较综合和仿真的结果VHDL语言是一种硬件描述和仿真语言;一些仿真结构在综合器中不被支持;二、可综合代码的设计特点1.比较综合和仿真的结果752.避免使用WAITFORxxns语句;AFTERxxns语句;信号和变量的赋初值语句;2.避免使用WAITFORxxns语句;763.使用CASE和IF_ELSE语句IF_ELSE描述一个优先级编码的逻辑;CASE语句描述一种对称平衡的行为;仿真结果一致;综合出来的设计速度会有不同。3.使用CASE和IF_ELSE语句IF_ELSE描述一个774.遵循一定的编代码规则选择使用大小写字母的规则;文件名与实体名匹配;给程序添加标号、注释;使用代码缩进、空行、空格等;建议使用std_logic类型;4.遵循一定的编代码规则选择使用大小写字母的规则;785.例子设计实现一个2-4译码器bcd(1)bcd(0)Led(3)led(2)led(1)led(0)0000010100101001001110005.例子设计实现一个2-4译码器bcd(1)bcd(079方法一:结构描述法基于元件例化和GENERATE语句;建立层次结构;可用简单的逻辑门和复杂的元件来描述系统;互连通过端口实现。方法一:结构描述法基于元件例化和GENERATE语句;80调用两个元件:与门ANDGate(调用4次)非门Inverter(调用2次)调用两个元件:与门ANDGate(调用4次)81方法二:数据流描述采用并发代入语句实现;通过输入信号值的改变来激活代入语句。方法二:数据流描述采用并发代入语句实现;82采用并发代入语句;采用并发代入语句;83方法三:行为描述法描述的是电路的功能,而不是电路的结构;采用PROCESS和CASE语句;方法三:行为描述法描述的是电路的功能,而不是电路的结构;84[工学]VHDL设计方法课件85三、FPGA中的一些设计方法竞争和冒险现象清除和置位信号触发器和锁存器同步设计延时电路的产生多时钟系统三、FPGA中的一些设计方法竞争和冒险现象861.竞争和冒险信号在FPGA中传送会有不一样延迟;当多个输入信号同时发生变化时,其组合逻辑就可能发生“毛刺”;毛刺会向下一级传送;毛刺会影响电路的稳定性。1.竞争和冒险信号在FPGA中传
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 柔性触觉交互接口下虚拟物体变形:技术、实现与应用探索
- 柔性基础下带帽刚性桩复合地基工作性状及破坏特征:理论、模拟与实证分析
- 柑橘NAC036互作蛋白的筛选鉴定与功能解析:解锁柑橘生长发育奥秘
- 柏木根系分泌物对栾树与香椿幼苗细根特性的影响探究
- 林业野外作业数据采集系统基础平台的设计与稳定性研究:构建智慧林业基石
- 构建达州市医保定点机构信用评价体系:理论实践与创新发展
- 2026福建省厦门银行股份有限公司校园招聘备考题库及答案详解(历年真题)
- 2026山东济南市第五人民医院招聘卫生高级人才和博士(控制总量)8人备考题库带答案详解(b卷)
- 2026四川达州万源市公安局招聘辅警20人备考题库附答案详解(基础题)
- 2026福建厦门市义务交警队招聘备考题库及一套答案详解
- GB/T 46587-2025光催化材料及制品空气净化性能测试方法甲硫醇的去除
- DB5107∕T 157-2025 天麻“两菌”-萌发菌、蜜环菌菌种生产技术规程
- 2026年苏州健雄职业技术学院单招职业倾向性测试必刷测试卷附答案
- 外语专业毕业生就业指导方案
- 中等职业学校数学课程标准
- 深圳食品安全员考试题库及答案
- 口服抗组胺药治疗儿童上气道过敏性疾病临床应用的专家共识解读 2
- GJB1406A-2021产品质量保证大纲要求
- 船舶运营与管理岗位面试题库:三管轮面试常见问题及答案
- 2025-2030中国物流包装绿色化转型与循环利用模式探索
- 能源管理平台V13平台需求说明书pd能源管理平台V13平台需求说明书
评论
0/150
提交评论