广州知名网站推广,服装生产厂商网站建设方案,dede网站名称,网页设计流程是什么顺序语句和并行语句是VHDL中的两大基本描述语句系列。
一、前言
所谓顺序语句#xff0c;是指在仿真意义上具有一定顺序性#xff08;或者说在逻辑上有先后之分#xff09;,并不意味着这些语句对于的硬件结构也有相同的顺序性。 所有门电路是并行地工作#xff0c;并没有…顺序语句和并行语句是VHDL中的两大基本描述语句系列。
一、前言
所谓顺序语句是指在仿真意义上具有一定顺序性或者说在逻辑上有先后之分,并不意味着这些语句对于的硬件结构也有相同的顺序性。 所有门电路是并行地工作并没有先后之分。以并行的工作方式实现顺序的逻辑是硬件描述语言的一大特点。
1.1 顺序语句的特点
语句的执行和书写顺序相同。顺序语句只能应用在进程和子程序中。
1.2 VHDL中常用的几种顺序描述语句
简单信号赋值语句signal assignment变量赋值语句variable assignmentwait语句if 语句case 语句loop语句next语句exit语句null 语句return 语句断言assert语句
二、wait语句
进程在仿真运行中总处于两种状态执行或者挂起。 当执行到wait语句时运行程序将被挂起直到满足此语句设置的结束挂起条件后将重新开始执行进程中的程序。
wait语句格式
对不同的结束挂起条件的设置wait语句有以下四种不同的语句格式
1WAIT
表示永远挂起
2WAIT ON 信号表
敏感信号等待语句信号表中列出的信号是等待语句的敏感信号敏感信号的变化将结束挂起重新启动进程。
3WAIT UNTIL 条件表达式
条件等待语句被此语句结束挂起的进程需顺序满足如下两个条件才能脱离挂起状态。 1在条件表达式中所含的信号发生了变化 2此信号改变后且满足wait语句所设的条件。 常用表达方式
WAIT UNTIL 信号 Value
WAIT UNTIL 信号’EVENT AND 信号 Value;例寄存器
library ieee;
use ieee.std_logic_1164.all;entity example isport(pin : in bit_vector(3 downto 0);clk,cnt : in bit;pout : out bit_vector(3 downto 0));
end example;architecture behave of example is
beginprocessbeginwait until clkevent and clk1;if cnt1 then poutpin;end if;end process;
end behave;4WAIT FOR 时间表达式
超时等待语句时间表达式说明需要等待的时间
三、if语句
if语句格式
1
if 条件句 then 顺序语句;
end if;例带控制口的加法器
library ieee;
use ieee.std_logic_1164.all;entity example isport(a , b : in integer;cnt : in bit;cout : out integer);
end example;architecture behave of example isbeginprocess(cnt)beginif cnt1 thencoutab;end if;end process;
end behave;2
if 条件句 then 顺序语句;
else 顺序语句;
end if;3
if 条件句 thenif 条件句 then…end if;
end if;4
if 条件句 then 顺序语句; elsif 条件句 then 顺序语句;…else 顺序语句;
end if;以4选1数据选择器为例
真值表
sy00a01b10c11d
library ieee;
use ieee.std_logic_1164.all;entity example isport ( a,b,c,d : in std_logic_vector(3 downto 0);s : in std_logic_vector(2 downto 0);y : out std_logic_vector(3 downto 0));
end example;architecture behave of example is
beginp1:process(d) begin--if 案例if s00 then ya;elsif s01 then yb;elsif s10 then yc;else yd; end if;end process p1;
end behave;
四、case语句
4.1 case语句格式
CASE 表达式 ISWhen 选择值 顺序语句;When 选择值 顺序语句;...
END CASE ;选择值可以有四种不同的表达方式
单个普通数值如6。数值选择范围如(2 TO 4)表示取值为2、3或4。并列数值如3|5表示取值为3或者5。混合方式以上三种方式的混合。
使用CASE语句需注意 1. 条件句中的选择值必须在表达式的取值范围内 2. 所有条件句中的选择值应完全覆盖case语句中表达式的取值。 3. 每一条件句的选择值只能出现一次。 4. case语句中至少要包含一个条件句
4.2 案例
以8-3译码器为例
library ieee;
use ieee.std_logic_1164.all;entity example isport ( d : in std_logic_vector(7 downto 0);q : out std_logic_vector(2 downto 0));
end example;architecture behave of example is
beginp1:process(d) begin--case 案例case d iswhen 01111111 q111;when 10111111 q110;when 11011111 q101;when 11101111 q100;when 11110111 q011;when 11111011 q010;when 11111101 q001;when 11111110 q000;when others null;end case;end process p1;
end behave;
五、LOOP语句
LOOP语句就是循环语句使所包含的一组顺序语句被循环执行循环次数可由设定的参数决定。一般用来描述片逻辑及迭代电路的行为。
常用的书写格式
1FOR循环变量
[标号] FOR 循环变量 IN 离散范围 LOOP顺序语句END LOOP [标号]说明
FOR后的循环变量是一个临时变量属LOOP语句的局部变量不必事先定义每次循环中循环变量都要在离散范围内变化。LOOP循环的次数最好以常数表示否则在LOOP体内的逻辑可以重复任何可能的次数。 例0~9累加
sum:0;
for i in 0 to 9 loopsum:sumi;
end loop;2While条件
[标号] WHILE 循环控制条件 LOOP 顺序处理语句END LOOP [标号]与FOR_LOOP语句不同的是WHILE_LOOP语句并没有给出循环次数范围没有自动递增循环变量的功能而是给出了循环执行顺序语句的条件。 这里的循环控制条件可以是任何布尔表达式当条件为TRUE时继续循环否则跳出循环。
3单个LOOP语句
[标号] LOOP顺序语句END LOOP [ 标号 ];这种循环方式是一种最简单的语句形式它的循环方式需引入其他控制方式如next语句、exit语句后才能确定。
六、NEXT语句
6.1 语句格式next [标号][when条件]
1NEXT
执行到NEXT时无条件中止当前循环返回循环起点开始下次循环。
2NEXT LOOP标号
执行到NEXT时无条件中止当前循环返回LOOP标号处开始下次循环。
3NEXT LOOP标号 WHEN 条件表达式
WHEN 条件表达式 是执行NEXT语句的条件条件表达式的值为真时执行NEXT语句进入跳转操作否则继续向下执行。
七、EXIT语句
7.1语句格式EXIT[标号][WHEN条件]
1EXIT
执行到NEXT时无条件中止当前循环跳出循环。
2EXIT LOOP标号
执行到NEXT时无条件中止当前循环返回LOOP循环语句的结束处跳出循环。
3EXIT LOOP标号 WHEN 条件表达式
WHEN 条件表达式 是执行NEXT语句的条件条件表达式的值为真时执行EXIT语句跳出循环。
注EXIT语句与NEXT语句十分相似都是LOOP语句的内部循环控制语句。
NEXT语句与EXIT 语句的区别
NEXT语句跳转到LOOP标号指定的LOOP处即跳到LOOP语句的起点。EXIT 语句跳转到LOOP循环语句的结束处即跳出循环
八、null语句
null语句表示一个空操作不发生任何行为目的只是使得程序执行到下一句。 空操作语句的语句格式NULL;
九、顺序断言ASSERT)语句
断言语句主要用于程序仿真、调试时使用在综合时忽略。
其格式为ASSERT 条件 [REPORT 输出信息] [SEVERITY 级别]
当执行ASSERT语句时如果条件为真则继续向下执行如果条件为假则输出错误信息和错误严重程度的级别在REPORT后面跟的是设计者所写的字符串通常是说明错误的 原因并且用双引号“ ”将字符串括起来。在VHDL中错误的严重程度可分为4个级别并跟在SEVERITY后面按严重程度由重到轻分别是NOTE、WARNING、ERROR、FAILURE。