欢迎来到天天文库
浏览记录
ID:39963922
大小:599.50 KB
页数:63页
时间:2019-07-16
《eda技术与应用讲义第5章第2节vhdl基本语句(二)基本单元电路表达》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章VHDL基本语句(二)课程讲义合肥工业大学彭良清下一章上一章上一章内容回顾先看一个VHDL代码的例子简单代码结构:端口定义和电路逻辑表达代码文件命名进程(PROCESS)VHDL代码中的:Port,Siganl,Variable学会简单VHDL设计的三板斧VHDL与C代码中的函数的区别?操作符&数据类型&赋值语句逻辑分支语句:IF;CASE,循环语句(LOOP)本章内容VHDL代码中的时序逻辑和组合逻辑表达语句的执行时间问题(顺序语句&并行语句)基本单元电路的VHDL代码(三态门,双向缓冲器,计数器,D触发器,译码器……)复杂代码
2、结构(子程序;元件;块;包)属性定义语句库的使用VHDL代码中的时序逻辑和组合逻辑表达不完整的条件语句构成时序电路完整的条件语句构成组合逻辑电路Q:何为时序电路和组合逻辑电路?不完整的条件语句的VHDLENTITYCOMP_BADISPORT(a1:INBIT;b1:INBIT;q1:OUTBIT);ENDENTITYCOMP_BAD;ARCHITECTUREoneOFCOMP_BADISBEGINPROCESS(a1,b1)BEGINIFa1>b1THENq1<='1';ELSIFa13、ARCHITECTUREone;请看图不完整的条件语句的电路图IFa1>b1THENq1<='1';ELSIFa1b1THEN--comparingitwithexample4_9,p82q1<='1';ELSEq1<='0';ENDIF;ENDPROCESS;EN4、DARCHITECTUREone;改进的代码请看改进代码的电路图请将a1,b1的数据位数变成8位,观察RTL图??IFa1>b1THENq1<='1';ELSEq1<='0';ENDIF;时序逻辑之:信号边沿检测信号边沿(或者)触发是时序逻辑的基本单元那么,在VHDL中如何检测信号的跳变?VHDL代码中的边沿信号检测(EVENT语句)上升沿检测IFCLK'EVENTANDCLK='1'THENQ<=D;ENDIF;下降沿检测IFCLK'EVENTANDCLK=‘0'THENQ<=D;ENDIF;3:更多的沿检测代码更多的:边沿信号检测的VHDL代码表达(5、一)ENTITYDFF1ISPORT(CLK:INBIT;D:INBIT;Q:OUTBIT);ENDENTITYDFF1;ARCHITECTUREbhvOFDFF1ISBEGINPROCESS(CLK)BEGINIFCLK'EVENTAND(CLK='1')AND(CLK'LAST_VALUE='0')THENQ<=D;ENDIF;ENDPROCESS;ENDARCHITECTUREbhv;详细参见:p83_ex4_11更多的:边沿信号检测的VHDL代码表达(二)ENTITYDFF1ISPORT(CLK:INBIT;D:INBIT;Q:OUTBIT);EN6、DENTITYDFF1;ARCHITECTUREbhvOFDFF1ISBEGINPROCESS(CLK)BEGINIFCLK='1'ANDCLK'LAST_VALUE='0'THEN--comparingwithexample11Q<=D;ENDIF;ENDPROCESS;ENDARCHITECTUREbhv;详细参见:p83_ex4_12更多的:边沿信号检测的VHDL代码表达(三)LIBARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF13ISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC;Q:7、OUTSTD_LOGIC);ENDENTITYDFF13;ARCHITECTUREbhvOFDFF13ISSIGNALQ1:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFrising_edge(CLK)THEN--comparingwithexample4-11,4_12--"rising_edge"definedinSTD_LOGIC_1164libaryQ1<=D;ENDIF;Q<=Q1;ENDPROCESS;ENDARCHITECTUREbhv;详细参见:p83_ex4_13他们有何不同?萝卜白菜,各人所爱都是填胞肚子^_^再看8、3段沿检测?代码PROCESSBEGINwaituntilCLK=
3、ARCHITECTUREone;请看图不完整的条件语句的电路图IFa1>b1THENq1<='1';ELSIFa1b1THEN--comparingitwithexample4_9,p82q1<='1';ELSEq1<='0';ENDIF;ENDPROCESS;EN
4、DARCHITECTUREone;改进的代码请看改进代码的电路图请将a1,b1的数据位数变成8位,观察RTL图??IFa1>b1THENq1<='1';ELSEq1<='0';ENDIF;时序逻辑之:信号边沿检测信号边沿(或者)触发是时序逻辑的基本单元那么,在VHDL中如何检测信号的跳变?VHDL代码中的边沿信号检测(EVENT语句)上升沿检测IFCLK'EVENTANDCLK='1'THENQ<=D;ENDIF;下降沿检测IFCLK'EVENTANDCLK=‘0'THENQ<=D;ENDIF;3:更多的沿检测代码更多的:边沿信号检测的VHDL代码表达(
5、一)ENTITYDFF1ISPORT(CLK:INBIT;D:INBIT;Q:OUTBIT);ENDENTITYDFF1;ARCHITECTUREbhvOFDFF1ISBEGINPROCESS(CLK)BEGINIFCLK'EVENTAND(CLK='1')AND(CLK'LAST_VALUE='0')THENQ<=D;ENDIF;ENDPROCESS;ENDARCHITECTUREbhv;详细参见:p83_ex4_11更多的:边沿信号检测的VHDL代码表达(二)ENTITYDFF1ISPORT(CLK:INBIT;D:INBIT;Q:OUTBIT);EN
6、DENTITYDFF1;ARCHITECTUREbhvOFDFF1ISBEGINPROCESS(CLK)BEGINIFCLK='1'ANDCLK'LAST_VALUE='0'THEN--comparingwithexample11Q<=D;ENDIF;ENDPROCESS;ENDARCHITECTUREbhv;详细参见:p83_ex4_12更多的:边沿信号检测的VHDL代码表达(三)LIBARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF13ISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC;Q:
7、OUTSTD_LOGIC);ENDENTITYDFF13;ARCHITECTUREbhvOFDFF13ISSIGNALQ1:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFrising_edge(CLK)THEN--comparingwithexample4-11,4_12--"rising_edge"definedinSTD_LOGIC_1164libaryQ1<=D;ENDIF;Q<=Q1;ENDPROCESS;ENDARCHITECTUREbhv;详细参见:p83_ex4_13他们有何不同?萝卜白菜,各人所爱都是填胞肚子^_^再看
8、3段沿检测?代码PROCESSBEGINwaituntilCLK=
此文档下载收益归作者所有