硬件描述语言及器件 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;.processbeginwait on s1,s2;end process;,未列出敏感量,wait与敏感量不兼容,Wait on 语句示例,例6-1process(a,b)beginy=a and
3、b;end process;,processbeginy=a and b;wait on a,b;end process;,例6-2process(a,b)beginy=a and b;wait on a,b;end process;,既使用敏感信号,又使用wait on语句,程序错误。,两种程序写法不同,功能相同,WAIT UNTIL 条件表达式,相比wait on 多了一种重新启动的条件,需同时按顺序满足以下两个条件,才能脱离挂起状态:1.表达式中所含信号发生改变;2.信号改变后,满足所设条件。,signal s1:std_logic;.processbeginwait until s1=
4、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);以上都表示等待上升沿,具有相同的硬件结构,WAIT FOR 时间表达式,又称为超时等待语句,此语句中定义了一个时间段,从执行到wait
5、语句开始,在此时间段内,进程处于挂起状态,当超过这一时间段后,进程自动回复执行。如: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语句。,如需表示等待多少时间,则大部分情况可使用if语句。,赋值语句,功能:将一个值或一个表达式的运算结果传递给某一个数据对象。赋值语句有两种:信号赋值(代入)语句
6、和变量赋值语句。每个赋值语句由三部分组成:1.赋值目标2.赋值符号3.赋值源VHDL规定,赋值目标与赋值源必须严格一致,IF语句,IF语句根据指定的条件来确定语句执行顺序,共有3种类型:(1)用于门闩控制的IF语句(2)用于二选一控制的IF语句(3)用于多选择控制的IF语句,(1)用于门闩控制的IF语句,这种类型的IF语句一般书写格式为:IF 条件 THENEND IF;,例6-6:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entit
7、y dff isport(clk:in std_logic;d:in std_logic;q:out std_logic);end entity dff;,Architecture a of dff isbeginp1:process(clk)beginif clkevent and clk=1 thenq=d;end if;end process p1;end a;,(2)用于二选一控制的IF语句,这种类型的语句书写格式为:IF 条件 THEN;ELSE;END IF;,二选一电路VHDL语言实现,例6-7:library ieee;use ieee.std_logic_1164.all;u
8、se ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity mux2 isport(a,b,sel:in std_logic;c:out std_logic);end entity mux2;,可写为:process(sel)If 语句条件表达式中出现的信号必为敏感信号,其它可忽略。,Architecture rtl of mux2 isBeginprocess(a,b,sel)beginif sel=1 thenc=a;elsec=b;end if;end process;End rtl;,(3)用于多选择控制的IF语
9、句,这种类型的IF语句书写格式为:IF 条件1 THEN;ELSIF 条件2 THEN;ELSIF 条件n THEN;ELSE;END IF;,(3)用于多选择控制的IF语句,例6-8:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity mux isport(sel:in std_logic_vector(1 downto 0);input:in std_logic_vector(3downto 0);y:out std_logi
10、c);end entity mux;Architecture a of mux isbegin,Process(sel)beginif sel=00 theny=input(0);elsif sel=01 theny=input(1);elsif sel=10 theny=input(2);else y=input(3);end if;end process;end a;,CASE 语句,case语句常用来描述总线行为、编码器和译码器的结构。case语句可读性好,非常简洁。case语句的一般格式为:case 选择信号 iswhen 条件选择值1=顺序语句1;when 条件选择值2=顺序语句2;
11、when others=顺序语句n;end case;,使用case语句的VHDL程序,case s iswhen 00=yyyy=d;end case;,仿真结果,CASE 语句与IF语句区别,IF语句是有序的,先处理最起始、最优先的条件,后处理次优先的条件。case语句是无序的,所有表达式值都并行处理。case语句中的条件表达式的值必须举穷尽,又不能重复。不能穷尽的条件表达式的值用OTHERS表示。,使用case语句实现状态机,process(reset,clk)variable state:integer range 0 to 3;beginif reset=0 thenstate:=0
12、;elsif clkevent and clk=1 thencase state iswhen 0=q q q q state:=0;end case;end begin,LOOP 语句,LOOP语句使程序能进行有规则的循环,循环次数受迭代算法控制。LOOP语句常用来描述位片逻辑及迭代电路的行为。FOR循环变量形成的LOOP语句这种形式的LOOP语句的书写格式为:标号:FOR 循环变量 IN 离散范围 LOOP END LOOP 标号;上述格式中:循环变量的值在每次循环中都会发生变化。离散范围表示循环变量在循环过程中的取值范围。,使用for-loop语句的VHDL程序,architecture
13、 behave of fuzhi issignal q:std_logic_vector(3 downto 0);beginprocess(clk)beginif clkevent and clk=1 thenfor i in 3 downto 0 loopq(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
14、isport(clk:in std_logic;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语句中,表示所剩条件选择值下的操作行为,满足了
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件描述语言及器件 VHDL基本语句学习PPT 硬件 描述 语言 器件 VHDL 基本 语句 学习 PPT

链接地址:https://www.31ppt.com/p-2364463.html