硬件描述语言及器件 VHDL基本语句学习PPT.ppt
《硬件描述语言及器件 VHDL基本语句学习PPT.ppt》由会员分享,可在线阅读,更多相关《硬件描述语言及器件 VHDL基本语句学习PPT.ppt(52页珍藏版)》请在三一文库上搜索。
1、VHDL的基本语句,1. 顺序语句 2. 并发语句,顺序语句,VHDL语句是并发语言,大部分语句是并发执行的。但是在进程、过程、块语句和子程序中,还有许多顺序执行语句。顺序语句有两类: 一类是真正的顺序语句(IF语句),一类是可以做顺序语句、又可以做并发语句、具有双重特性的语句(赋值语句、process语句)。,顺序语句:,1.PROCESS语句 2.WAIT 语句 3.赋值语句 4.IF 语句 5.CASE 语句 6.LOOP语句 7. NULL语句,WAIT 语句,进程在仿真运行中总是处于执行状态或挂起状态。除了受敏感信号的控制外,进程状态的变化还受等待语句的控制,当进程执行到等待语句时,
2、就将被挂起,并设置好再次执行的条件。 Wait语句的4种不同的条件 : wait -无限等待 wait on -敏感信号变化 wait until -条件满足 wait for -时间到,WAIT,未设置停止挂起条件的表达式, 表示永远挂起。,WAIT ON 信号表,又称为敏感信号等待语句,在信号表中列出的信号是等待语句的敏感信号,当处于等待状态时,敏感信号的任何变化将结束挂起,再次启动进程,signal s1,s2:std_logic; . process begin wait on s1,s2; end process;,未列出敏感量,wait与敏感量不兼容,Wait on 语句示例,例6
3、-1 process (a,b) begin y = a and b; end process;,process begin y = a and b; wait on a,b; end process;,例6-2 process (a,b) begin y = a and b; wait on a,b; end process;,既使用敏感信号,又使用wait on语句,程序错误。,两种程序写法不同,功能相同,WAIT UNTIL 条件表达式,相比wait on 多了一种重新启动的条件,需同时按顺序满足以下两个条件,才能脱离挂起状态: 1.表达式中所含信号发生改变; 2.信号改变后,满足所设条
4、件。,signal s1:std_logic; . process begin wait until s1=1; end process;,WAIT UNTIL 条件表达式,一般的,只有wait until语句可以被综合器接受,其它格式只能在仿真其中使用。,wait until语句表达方式: 1.wait until 信号 = value; 2.wait until 信号event and 信号 = value;,例: 1.wait until clk = 1; 2.wait until clockevent and clk = 1; 3.wait until rising_edge(clk)
5、; 以上都表示等待上升沿,具有相同的硬件结构,WAIT FOR 时间表达式,又称为超时等待语句,此语句中定义了一个时间段,从执行到wait语句开始,在此时间段内,进程处于挂起状态,当超过这一时间段后,进程自动回复执行。 如: wait for 20ns wait for (a (b + c) a,b,c 为时间量,其它wait语句,多条件wait语句 例:Wait on nmi,interrupt until(umi=true) or (interrupt = true) for 5us;,wait语句大部分情况适用于仿真,而仿真需要与实际硬件(芯片)相结合,故在工程实际中,较少使用wait语
6、句。,如需表示等待多少时间,则大部分情况可使用if语句。,赋值语句,功能:将一个值或一个表达式的运算结果传递给某一个数据对象。 赋值语句有两种:信号赋值(代入)语句和变量赋值语句。 每个赋值语句由三部分组成: 1.赋值目标 2.赋值符号 3.赋值源 VHDL规定,赋值目标与赋值源必须严格一致,IF语句,IF语句根据指定的条件来确定语句执行顺序,共有3种类型: (1) 用于门闩控制的IF语句 (2) 用于二选一控制的IF语句 (3) 用于多选择控制的IF语句,(1) 用于门闩控制的IF语句,这种类型的IF语句一般书写格式为: IF 条件 THEN END IF;,例6-6: library ie
7、ee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity dff is port(clk : in std_logic; d: in std_logic; q: out std_logic ); end entity dff;,Architecture a of dff is begin p1: process(clk) begin if clkevent and clk = 1 then q = d; end if; end process p1
8、; end a;,(2) 用于二选一控制的IF语句,这种类型的语句书写格式为: IF 条件 THEN ; ELSE ; END IF;,二选一电路VHDL语言实现,例6-7: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity mux2 is port(a,b,sel : in std_logic; c: out std_logic ); end entity mux2;,可写为:process(sel) If 语句条件表
9、达式中出现的信号必为敏感信号,其它可忽略。,Architecture rtl of mux2 is Begin process(a,b,sel) begin if sel = 1 then c = a; else c = b; end if; end process; End rtl;,(3) 用于多选择控制的IF语句,这种类型的IF语句书写格式为: IF 条件1 THEN ; ELSIF 条件2 THEN ; ELSIF 条件n THEN ; ELSE ; END IF;,(3) 用于多选择控制的IF语句,例6-8: library ieee; use ieee.std_logic_1164
10、.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity mux is port(sel : in std_logic_vector(1 downto 0); input : in std_logic_vector(3downto 0); y: out std_logic ); end entity mux; Architecture a of mux is begin,Process(sel) begin if sel=“00“ then y = input(0); elsif sel=“01“ t
11、hen y = input(1); elsif sel=“10“ then y = input(2); else y = input(3); end if; end process; end a;,CASE 语句,case语句常用来描述总线行为、编码器和译码器的结构。 case语句可读性好,非常简洁。case语句的一般格式为: case 选择信号 is when 条件选择值1 =顺序语句1; when 条件选择值2=顺序语句2; when others =顺序语句n; end case;,使用case语句的VHDL程序,case s is when “00“= y y y y=d; end c
12、ase;,仿真结果,CASE 语句与IF语句区别,IF语句是有序的,先处理最起始、最优先的条件,后处理次优先的条件。 case语句是无序的,所有表达式值都并行处理。 case语句中的条件表达式的值必须举穷尽,又不能重复。 不能穷尽的条件表达式的值用OTHERS表示。,使用case语句实现状态机,process(reset,clk) variable state : integer range 0 to 3; begin if reset = 0 then state := 0; elsif clkevent and clk = 1 then case state is when 0 = q q
13、 q q state := 0; end case; end begin,LOOP 语句,LOOP语句使程序能进行有规则的循环,循环次数受迭代算法控制。LOOP语句常用来描述位片逻辑及迭代电路的行为。 FOR循环变量形成的LOOP语句 这种形式的LOOP语句的书写格式为: 标号:FOR 循环变量 IN 离散范围 LOOP END LOOP 标号; 上述格式中: 循环变量的值在每次循环中都会发生变化。 离散范围表示循环变量在循环过程中的取值范围。,使用for-loop语句的VHDL程序,architecture behave of fuzhi is signal q:std_logic_vect
14、or(3 downto 0); begin process(clk) begin if clkevent and clk=1 then for i in 3 downto 0 loop q(i)=a(3-i); end loop; end if; end process; y=q; end behave;,library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity fuzhi is port(clk : in std_logic;
15、 a: in std_logic_vector(3 downto 0); y: out std_logic_vector(3 downto 0) ); end entity fuzhi;,WHILE条件下的LOOP语句,书写形式为: 标号:WHILE 条件 LOOP END LOOP 标号;,例 pari:WHILE (i 8) LOOP tmp := tmp XOR a(i); i := i+1; END LOOP pari;,NULL语句,表示一个空操作,它不发生任何动作,null语句的格式为: null; null语句常用在case语句中,表示所剩条件选择值下的操作行为,满足了case语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件描述语言及器件 VHDL基本语句学习PPT 硬件 描述 语言 器件 VHDL 基本 语句 学习 PPT
链接地址:https://www.31doc.com/p-3841128.html