- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VHDL进阶 本讲要点: VHDL程序运行机制:并行语句和顺序语句 process语句 If语句 时钟边沿 同步和异步 3.2 简单时序电路的VHDL描述 VHDL程序运行机制 VHDL程序运行机制 并行语句和顺序语句 进程语句 2、库和程序包 4. VITAL If-then 语法 IF 条件 THEN 顺序处理语句1; 顺序处理语句2; … END IF; If-then-else 语法 IF 条件 THEN 语句1; 语句2; 。。。 ELSE 语句1; 语句2; 。。。 END IF; IF语句不仅可以用于选择器的设计,而且还可以用于比较器、译码器等凡是可以进行条件控制的逻辑电路设计。 需要注意的是, IF语句的条件判断输出是布尔量, 即是“真”(TRUE)或“假”(FALSE)。 因此在IF语句的条件表达式中只能使用关系运算操作(=, /=, , , =, =)及逻辑运算操作的组合表达式。 时钟信号 任何时序电路都以时钟信号为驱动信号,时序电路仅在时钟信号的边沿到来时,其状态才发生改变。 因此,时钟信号通常是描述时序电路程序的执行条件。 另外,时序电路也总是以时钟进程的形式进行描述的 时钟脉冲上升沿描述 IF (clk′EVENT AND clk=′1′) THEN… WAIT UNTIL clk=‘1’;… IF (clk’last_value=‘0’ AND clk’event AND clk=‘1’) THEN… IF ( rising_edge(clk) ) THEN… 时钟脉冲下降沿描述 IF (clk′EVENT AND clk=′0′) THEN… WAIT UNTIL clk=‘0’;… IF (clk’last_value=‘1’ AND clk’event AND clk=‘0’) THEN… IF (falling_edge(clk)) THEN… 复位信号 同步复位,就是当复位信号有效且在给定的时钟边沿到来时,触发器才被复位。换一句话说,即使复位信号有效,如果时钟脉冲边沿未到来,触发器也不会复位。 异步复位则不同,一旦复位信号有效,触发器就立即复位。 同步复位描述的VHDL描述 PROCESS(clk) BEGIN IF 时钟边沿判断 THEN IF 复位条件 THEN Signal_out=reset_value; ELSE Signal_out=signal_in; ┇ END IF; END IF; END PROCESS; 同步复位描述 在用VHDL语言描述时,同步复位一定在以时钟为敏感信号的进程中定义,且用IF语句来描述必要的复位条件。 另外,描述复位条件的IF语句一定要嵌套在描述时钟边沿条件的IF语句的内部, 异步复位的VHDL语言描述 首先,在进程的敏感信号表中除时钟外,还应添上复位信号; 另外,描述复位的IF语句应放在进程的第一条语句位置 PROCESS(clock_signal, reset_signal) BEGIN IF(reset_condition) THEN Signal_out=reset_value; ELSIF(clock_edge_condition) THEN Signal_out=signal_in; ┇ END IF; END PROCESS; * * --语句1; --语句2; --语句3; --语句4; architecture one of mux21b is signal c, e: bit ; begin process (a,b,d) begin c = a+b ; e=d ; end process; f=c; g=d; h=c+d; end architecture one ; 并发执行 --语句1; --语句2; 顺序执行 architecture one of mux21b is signal c, e: bit ; begin process (a,b,d) begin c = a+b ; e=d ; end process; f=c; g=d; h=c+d; end
文档评论(0)