任务2.2 VHDL并行语句

合集下载

VHDL语句

VHDL语句

VHDL的顺序语句和并行语句一、顺序语句顺序语句只能出现在进程(PROCESS)、子程序(过程(PROCEDURE)和函数(FUNCTION))中,其特点与传统的计算机编程语句类似,是按程序书写的顺序自上而下、一条一条地执行。

利用顺序语句可以描述数字逻辑系统中的组合逻辑电路和时序逻辑电路。

VHDL的顺序语句有赋值语句、流程控制语句、等待语句、子程序调用语句、返回语句、空操作语句等六类。

<1>赋值语句赋值语句的功能是将一个值或一个表达式的运算结果传递给某一个数据对象。

(1)变量赋值语句格式:目标变量名:=赋值源(表达式);例如:x:=5.0;(2)信号赋值语句格式:目标信号名<=赋值源;例如:y<=…1‟;说明:该语句若出现在进程或子程序中则是顺序语句,若出现在结构体中则是并行语句。

( 3 )数组元素赋值例如:SIGNAL a,b:STD LOGIC VECTOR(1 TO 4);a<=“1101”;a(1 TO 2)<=“10”;a(1 TO 2)<=b(2 TO 3);<2>流程控制语句通过条件控制开关决定是否执行一条或几条语句,或重复执行一条或几条语句,或跳过一条或几条语句。

流程控制语句共有5种:IF语句CASE语句LOOP语句NEXT语句EXIT语句(1)IF语句1、IF 条件句Then 顺序语句END IF ;2、IF 条件句Then 顺序语句ELSE 顺序语句END IF ;3、IF 条件句Then 顺序语句ELSIF 条件句Then 顺序语句...ELSE 顺序语句END IF4、IF 条件句ThenIF 条件句Then...END IFEND IF例子:8线-3线优先编码器的设计LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALLENTITY coder ISPORT(a:IN STD LOGIC VECTOR(0 TO 7);y:OUT STD LOGIC VECTOR(0 TO 2));END coder;ARCHITECTURE example2 OF coder ISBEGINPROCESS(a)BEGINIF (a(7)=…0‟)THEN y<=”111”;ELSIF (a(6)=‟0‟) THEN y<=”011”;ELSIF (a(5)=‟0‟) THEN y<=”101”;ELSIF (a(4)=‟0‟) THEN y<=”001”;ELSIF (a(3)=‟0‟) THEN y<=”110”;ELSIF (a(2)=‟0‟) THEN y<=”010”;ELSIF (a(1)=‟0‟) THEN y<=”100”;ELSE y<=”000”;END IF;END PROCESS;END example2;(2)CASE语句格式:CASE 表达式ISWhen 选择值=>顺序语句;When 选择值=>顺序语句;…When OTHERS =>顺序语句;END CASE;说明:“=>”不是运算符,相当“THEN”。

VHDL基本语句

VHDL基本语句
表达式可以是一个整数或枚举类型的值或数组 选择值有四种表达方式: ● 单个数值 , 如 :6 ● 数值选择范围, 如: (2 TO 4)表示取值为2,3,4。 ● 并列数值 如: 3 5 表示取值为3或着5 ● 混合方式 以上三种方式的混合

ARCHITECTURE example OF mux4 IS BEGIN PROCESS (sel) 注 BEGIN ●CASE中的选择值必须在表达式的取值范围内; CASE sel IS WHEN 0=> q <= d0 ; ●CASE语句是无序的,所有表达式值都是并行 WHEN 1=> q <= d1 ; 处理;而IF语句是有序的,最起始、最优先 WHEN 2=> q<= d3 ; WHEN 3=> q<= d4 ; 的先处理; WHEN others => NULL; ●可以有很多分支,但OTHERS分支只能有一个, END CASE; 且只能位于最后;用来使所有选择值能涵盖表 END PROCESS; END example; 达式的所有取值,以免插入不必要的锁存器
3、用于多选控制的IF语句:
格式 IF 条件1 THEN
<顺序处理语句1>;
ELSIF 条件2 THEN <顺序处理语句2>; : ELSIF 条件n-1 THEN <顺序处理语句n-1>; ELSE <顺序处理语句n>; END IF;
P1: PROCESS (clk) BEGIN
IF (clk‘ event and clk=‗1‘ ) THEN
顺序语句
赋值语句
VHDL设计实体内的数据传递以及对端口界面外部数据的读写 都必须通过赋值语句的运行来实现。 功能是将一个值或表达式的运算结果传递给某一数据对象。 赋值语句有两种: 信号赋值语句和变量赋值语句 区别

VHDL语言的主要描述语句

VHDL语言的主要描述语句

VHDL语言的主要描述语句按照语句的执行顺序对VHDL语言进行分类,包含两类语句:●并行描述语句该语句的执行与书写顺序无关,总是同时被执行●顺序描述语句从仿真的角度,该语句是顺序执行的进程语句(PROCESS)是最典型的并行语句,一个构造体可以有几个进程语句同时存在,而且并发执行。

但是进程部的所有语句都是顺序语句。

一、顺序描述语句顺序描述语句只能用在进程和子程序中,它和其他高级语言一样,其语句是按照语句的出现的顺序加以执行的。

如下分别介绍有关的顺序描述语句.1.WAIT语句进程在执行过程中总是处于两种状态:执行或挂起,进程的状态变化受等待语句的控制,当进程执行到等待语句,就被挂起,并等待再次执行进程.等待语句的格式:*WAIT 无限等待*WAIT ON 敏感信号变化*WAIT UNTIL 条件满足*WAIT FOR 时间到(1)WAIT ON格式:WAIT ON 信号[,信号]例5-1PROCESS(a,b)BEGINy<=a AND b;END PROCESS;该例中的进程与下例中进程相同:例5-1PROCESSBEGINy<=a AND b;WAIT ON a,b;END PROCESS;例5-2PROCESS(a,b)BEGINy<=a AND b;WAIT ON a,b;END PROCESS;(2)WAIT UNTIL 直到条件满足格式: WAIT UNTIL 布尔表达式当进程执行到该语句时,被挂起;若布尔表达式为真时,进程将被启动.例: WAIT UNTIL ((x*10)<100)(3)WAIT FOR 等到时间到格式: WAIT FOR 时间表达式当进程执行到该语句时,被挂起;等待一定的时间后,进程将被启动.例: WAIT FOR 20 ns;WAIT FOR (a*(b+c);(4)多条件WAIT 语句例: WAIT ON nmi,interrupt UNTIL ((nmi=TRUE) OR (interrupt=TRUE)) FOR 5 us 该等待有三个条件:第一,信号nmi和interrupt 任何一个有一次刷新动作第二, 信号nmi和interrupt 任何一个为真第三, 已等待5 us只要一个以上的条件被满足,进程就被启动.*注意:多条件等待时,表达式的值至少应包含一个信号量的值。

VHDL语言的主要描述语句

VHDL语言的主要描述语句

VHDL语言的主要描述语句按照语句的执行顺序对VHDL语言进行分类,包含两类语句:并行描述语句该语句的执行与书写顺序无关,总是同时被执行顺序描述语句从仿真的角度,该语句是顺序执行的进程语句(PROCESS)是最典型的并行语句,一个构造体内可以有几个进程语句同时存在,而且并发执行。

但是进程内部的所有语句都是顺序语句。

一、顺序描述语句顺序描述语句只能用在进程和子程序中,它和其他高级语言一样,其语句是按照语句的出现的顺序加以执行的。

如下分别介绍有关的顺序描述语句.1.WAIT语句进程在执行过程中总是处于两种状态:执行或挂起,进程的状态变化受等待语句的控制,当进程执行到等待语句,就被挂起,并等待再次执行进程.等待语句的格式:*WAIT 无限等待*WAIT ON 敏感信号变化*WAIT UNTIL 条件满足*WAIT FOR 时间到(1)WAIT ON格式:WAIT ON 信号[,信号]例5-1PROCESS(a,b)BEGINy<=a AND b;END PROCESS;该例中的进程与下例中进程相同:例5-1PROCESSBEGINy<=a AND b;WAIT ON a,b;END PROCESS;例5-2PROCESS(a,b)BEGINy<=a AND b;WAIT ON a,b;END PROCESS;(2)WAIT UNTIL 直到条件满足格式: WAIT UNTIL 布尔表达式当进程执行到该语句时,被挂起;若布尔表达式为真时,进程将被启动.例: WAIT UNTIL ((x*10)<100)(3)WAIT FOR等到时间到格式: WAIT FOR 时间表达式当进程执行到该语句时,被挂起;等待一定的时间后,进程将被启动.例: WAIT FOR 20 ns;WAIT FOR (a*(b+c);(4)多条件WAIT 语句例: WAIT ON nmi,interrupt UNTIL ((nmi=TRUE) OR (interrupt=TRUE)) FOR 5 us 该等待有三个条件:第一,信号nmi和interrupt 任何一个有一次刷新动作第二, 信号nmi和interrupt 任何一个为真第三, 已等待5 us只要一个以上的条件被满足,进程就被启动.*注意:多条件等待时,表达式的值至少应包含一个信号量的值。

VHDL并行语句

VHDL并行语句

end if;
c<=temp; end maximum;
signal tmp1,tmp2:
std_logic_vector(7 downto 0); begin maximum(in1,in2,tmp1); maximum(tmp1,in3,tmp2); q<=tmp2; end rtl;
16
17
b<=not a; end;
21
library ieee; use ieee.std_logic_1164.all; begin u1:new_not generic map(4) entity test_gene is port (a: in std_logic_vector(3 downto 0); z: out std_logic_vector(3 downto 0)); end test_gene; architecture rtl of component new_not generic(len:integer); test_gene is end rtl;
例 一个列出选择条件为不同取值范围的4选1多路选择器,当不 满足条件时,输出呈高阻态。 ... WITH selt SELECT muxout <= a WHEN 0|1 , -- 0或1 b WHEN 2 TO 5 , -- 2或3,或4或5 c WHEN 6 , d WHEN 7 , 'Z' WHEN OTHERS ; ...
9
6.4.2 条件信号赋值语句
赋值目标 <= 表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE ... 表达式 ;
10
例 四选一电路 entity mux4 is port(i0,i1,i2,i3,a,b: in std_logic; q: out std_logic); end mux4; architecture rtl of mux4 is signal sel:std_logic_vector(1 downto 0); begin sel<=b & a; q<=i0 when sel="00" else i1 when sel="01" else i2 when sel="10" else i3 when sel="11" else 'X'; end rtl;

VHDL的并行语句

VHDL的并行语句

case语句
null语句(空语句,值保持不变)
进程语句的构成
PROCESS语句结构
进程说明 信 号 赋 值 语 句 变 量 赋 值 语 句
顺序描述语句 进 程 启 动 语 句 子 程 序 调 用 语 句 顺 序 描 述 语 句 进 程 跳 出 语 句
敏感信号参数表
Example will be more clear
c selb
q
Conditional Signal Assigments

The output get the value when the condition is true e.g. 2 to 1 multiplexer
Entity test1 is port (in1, in2, sel : in bit; d : out bit); end test1; architecture test1_body of test1 is begin d <= in1 when sel = „0‟ else in2; end test1_body;
选择信号赋值语句
基本格式 WITH 表达式 SELECT 目标信号<= 表达式1 WHEN 选择条件1, 表达式2 WHEN 选择条件2, …… 举例 表达式n WHEN 选择条件n; WITH sel SELECT

所有可能情况都要考 q <= a WHEN “00”, A 虑,但可以在最后加 B 上Others语句来处理 b WHEN “01”, C 未考虑到的情况D
常用并行语句包括:

信号赋值语句
简单信号、条件信号、选择信号赋值语句

进程(Process)语句

元件例化(Component)语句

EAD课程-第6章VHDL并行语句

EAD课程-第6章VHDL并行语句

条件信号赋值语句
选择信号赋值语句
EDA技术
16
第6章 VHDL并行语句
(1)简单信号赋值语句
是VHDL并行语句结构中最基本的单元。 格式: 赋值目标<=表达式;
规则:① 赋值目标必须是信号; ② 赋值目标的数据类型必须与表达式数据 类型一致。 例如: OUT_1 <= B AND C;
EDA技术
17
6
第6章 VHDL并行语句
(2)进程语句的组成 ② 顺序描述语句部分
● 进程启动语句:当PROCESS 语句未列出任何敏感 信号时,进程的启动可通过 WAIT语句来实现。
● 顺序描述语句:包括IF语句、CASE语句、LOOP语 句和NULL语句。
● 进程跳出语句:包括NEXT语句和EXIT语句。
③ 敏感信号参数表 用于启动本进程可读入的信号名。
EDA技术
7
第6章 VHDL并行语句
【例1】用进程语句描述异步清零计数器。
异步清零方式与时钟信号clk无关,当清零端clr=0时, 计数状态Q=0;当clr=1时,计数器为计数状态。 PROCESS ( clk, clr ) BEGIN IF clr =‘0’ THEN THEN Q<= X“00”; ELSIF ( clk =‘1’AND clk’EVENT ) Q <= Q + 1; END IF; END PROCESS;
EDA技术
18
第6章 VHDL并行语句
【例3】用条件赋值语句实现四选一数据选择器。
ARCHITECTURE
SIGNAL BEGIN s <= s1&s0; y<= d0 d1 d2 d3; WHEN WHEN WHEN s =“00” ELSE -- 当s = 00时,y = d0 s =“01” ELSE s =“10” ELSE

第四讲 VHDL语句(并行)

第四讲 VHDL语句(并行)
在一个构造体中多个PROCESS 语句可以同时并 在一个构造体中多个 PROCESS语句可以同时并 行的执行,该语句有如下特点: 行的执行,该语句有如下特点: 1 、 可以和其它进程语句同时执行 , 并可以存取构造体 可以和其它进程语句同时执行, 和实体中所定义的信号 2、进程中的所有语句都按照顺序执行 3、 为启动进程 ,在进程中必须包含一个敏感信号表或 为启动进程, WAIT语句 WAIT语句 4、进程之间的通信是通过信号来实现的
D
WAIT语句 WAIT语句
WAIT WAIT ON WAIT UNTIL WAIT FOR 无限等待 敏感信号量变化 条件满足 时间到
WAIT 语句
格式: 信号[,信号 信号] 格式:WAIT ON 信号[,信号] 例: PROCESS BEGIN y<=a AND b; WAIT ON a,b; a,b; END PROCESS; PROCESS; 该例中的进程与下例中进程相同: 该例中的进程与下例中进程相ห้องสมุดไป่ตู้:
例: Architecture m2 of and2 is Signal tmp : std_logic_vector(1 down to 0); Begin tmp<=d1 & d2; With tmp select f<=’1’ when “11”, ‘0’ when others; End m2;
Architecture m2 of exam1 is begin process (a, b) begin c<=a and b; d<= a or b ; end process; end m2;
A B & C
≥1
D
Architecture m2 of exam1 is begin process begin c<=a and b; d<= a or b ; end process; end m2;

EDA 技术:VHDL语句总结

EDA 技术:VHDL语句总结

begin
if sel = "0001" then output <= in1(0) ; output2<=‘1’;
elsif (sel = "0010") then
output <= in1(0) xor in1(1) ; output2 <= ‘0’ ;
elsif sel = "0100" then
sel: in std_logic_vector(3 downto 0); output: out std_logic; output2: out std_logic); end ifexample1;
architecture arch of ifexample1 is
begin
process(in1, sel)
begin case (din) is when “00” => dout <=“0001” ; when “01” => dout <= “0010” ; when “10” => dout <=“0100” ; when “11” => dout <=“1000” ; end case;
end rtl ;
使用变量能获得比较好的综合结果,有利于优化, 但 需要锁存中间结果时必须使用信号。
❖ 初值(有三种形式,前两种综合忽略)
1、type states is (IDLE,S0,S1,S2); signal state:states; --信号state默认值为IDLE
2、signal Z : bit_vector(3 downto 0) :=“0000” ;
end if; end process; end rtl;

06 第六章 VHDL语言的并行描述语句

06 第六章 VHDL语言的并行描述语句

第六章 VHDL语言的并行描述语句
6.11 延时语句
延时语句:用于给信号量一个延时,可以 分为惯性延时和传输延时。
惯性延时的标准调用格式:
传输延时的标准调用格式:
第六章 VHDL语言的并行描述语句
思考和练习——填空题
1、VHDL语言的并行语句可以是____的,也可以是____的,其是硬件描述语言特有的, 其在系统的某一时刻同时执行,不因编程的语句顺序而影响执行的先后。
2、条件信号代入语句是不能嵌套的,不能把自身值代入目的信号自身,所以不能用条 件信号代入语句设计____。
3、选择信号代入语句的并发操作可以在进程外实现进程内的____语句的功能。 4、PROCESS语句不是一条单纯的程序语句,而是一个程序结构,该程序结构起始于进
程的标识符,终止于____。 5、在进程语句中可以定义____而不能定义____,其等效于开辟了一个____, 6、如果进程ቤተ መጻሕፍቲ ባይዱ既没有敏感信号列表,又没有WAIT语句,那么该进程将陷入____中。 7、元件调用语句(COMPONENT)语句的结构中,____语句进行元件的参数说明,
参数的代入或赋值,而PORT说明语句则描 述了该元件的输入和输出端 COMPONENT语句可以在 ARCHITECTURE、PACKAGE和BLOCK语 句结构的说明部分使用。
第六章 VHDL语言的并行描述语句
6.4 端口映射语句
端口映射语句(PORT MAP)也称为元件例 化语句(COMPONENT INSTANT),其把 库中现成元件的端口信号映射成高层次设 计电路中的信号。
返回语句用于函数和过程中来结束最内层 的函数或者过程的执行,过程中的返回语 句必须是无条件的,而函数中的返回语句 必须有表达式。

[物理]VHDL并行

[物理]VHDL并行

【例7.9】用选择信号赋值语句实现4选1 数据选择器。 library ieee; use ieee.std_logic_1164.all; entity mux41 is port( s1,s0:in std_logic; d3,d2,d1,d0:in std_logic; y:out std_logic); end mux41; architecture example of mux41 is signal s:std_logic_vector(1 downto 0); begin s<=s1&s0; with s select y<=d0 when "00", d1 when "01", d2 when "10", d3 when "11", 'X' when others; end example;
并行语句主要有:并行信号赋值语句(Concurrent Signal Assignments)、条件信号赋值语句 (Conditional Signal Assignments)、选择信号 赋值语句(Selective Signal Assignments)、进 程语句(Process Statement)、块语句(Block Statement)、生成语句(Generate Statement)、 元件例化语句(Component Instantiations)和并 行过程调用语句(Concurrent Procedure Calls) 等8种。在结构体中,并行语句的位置是: ARCHITECTURE 结构体名 OF 实体名 IS 说明语句 BEGIN 并行语句 END ARCHITECTURE 结构体名:
6.3 并行信号赋值语句 并行信号赋值语句的赋值目标必须都是信号,它们在结 构体内的执行是同时发生的,与它们的书写顺序没有关系。 并行信号赋值语句有简单信号赋值语句、条件信号赋值语句 和选择信号赋值语句3种形式。 6.3.1 简单信号赋值语句 简单信号赋值语句是VHDL并行语句结构中最基本的单元。 简单信号赋值语句在进程内部使用时,它作为顺序语句的的 形式出现;在结构体的进程之外使用时,它是作为并发语句 的形式出现的。其语句格式为: 『格式』: 赋值目标<=表达式; 例如: output<=a AND b; 赋值目标必须是信号,它的数据类型必须与赋值符号右边表 达式的数据类型一致。

《VHDL语言与数字逻辑电路设计》——第6讲 VHDL并行语句课件

《VHDL语言与数字逻辑电路设计》——第6讲 VHDL并行语句课件
ENTITY cntvh10 PORT ( rd,clk: IN std_logic; co : OUT std_logic; qout: OUT std_logic_vector(6 DOWNTO 0));
END cntvh10;
--接下一页
PPT学习交流
18
第6讲 VHDL并行语句
➢ 元件的例化
PPT学习交流
2
第6讲 VHDL并行语句
➢ 进程语句 (Process)
进程(Process)语句是一种并发处理语句,在一个构造体中多个Process 是同时并行运行,它是VHDL语言中描述硬件系统并发行为的最基本的语 句。它的特点归纳如下: • 一个进程语句可以与其他进程语句并发运行; • 进程语句可以存取在设计实体或构造体中定义的所有信号; • 在一个进程模块内的语句都是按顺序执行的; • 进程有挂起和执行两个状态,要激活进程,在进程结构中必须包含一个 敏感信号列表或含一个Wait语句; • 进程之间的通信是通过信号传递实现的。
PPT学习交流
3
第6讲 VHDL并行语句
➢ 块语句(Block)
块语句是将结构体中的并行语句组合在一起,其主要目的是改善并行 语句及其结构的可读性,一般用于较复杂的VHDL程序中;但从综合的角 度看,BLOCK语句没有实用价值。 块语句的语法描述如下:
块标号:BLOCK 说明语句;
BEGIN 并行语句;
BEGIN y<=a0 WHEN s="00" ELSE a1 WHEN s="01" ELSE a2 WHEN s="10" ELSE a3 ;
ELSE ELSE
对比If语句: If条件信号赋值语句是

vhdl的并行语句在结构体中的执行方式

vhdl的并行语句在结构体中的执行方式

vhdl的并行语句在结构体中的执行方式在VHDL中,可以在结构体中使用并行语句。

这些并行语句将被并行执行,以提高设计的性能。

例如,在下面的代码中,我们定义了一个包含两个信号的结构体,并在结构体中使用了一个if语句和一个case语句。

这些语句将被并行执行,在同一时钟周期内完成。

library ieee;use ieee.std_logic_1164.all;entity parallel_in_struct isend entity parallel_in_struct;architecture behave of parallel_in_struct istype my_struct is recordsignal a : std_logic;signal b : std_logic;end record;signal my_signal : my_struct;beginparallel_process: process(clk)beginif rising_edge(clk) thencase my_signal.a iswhen '0' =>my_signal.b <= '1';when '1' =>my_signal.b <= '0';when others =>my_signal.b <= 'Z';end case;end if;end process parallel_process;end architecture behave;在这个例子中,我们定义了一个名为“my_struct”的结构体,并在其中包含了两个名为“a”和“b”的信号。

然后,在我们的进程中,我们使用了一个if语句和一个case语句来对“my_signal”的信号进行操作。

在执行过程中,“if”和“case”语句将被并行执行,以提高设计的性能。

VHDL顺序与并行语句

VHDL顺序与并行语句

一顺序语句
1.4 LOOP语句
(2) FOR_LOOP语句,语法格式如下:
[LOOP标号:] FOR 循环变量,IN 顺序语句 END LOOP [LOOP标号]; 循环次数范围 LOOP
一顺序语句
1.4 LOOP语句
【例4】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY p_check IS PORT ( a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); y : OUT STD_LOGIC ); END p_check; ARCHITECTURE opt OF p_check IS SIGNAL tmp :STD_LOGIC ; BEGIN PROCESS(a) BEGIN tmp <='0'; FOR n IN 0 TO 7 LOOP tmp <= tmp XOR a(n); END LOOP ; y <= tmp; END PROCESS; END opt;
【例3】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY alu IS PORT( a, b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); opcode: IN STD_LOGIC_VECTOR (1 DOWNTO 0); result: OUT STD_LOGIC_VECTOR (7 DOWNTO 0) ); END alu; ARCHITECTURE behave OF alu IS CONSTANT plus : STD_LOGIC_VECTOR (1 DOWNTO 0) := CONSTANT minus : STD_LOGIC_VECTOR (1 DOWNTO 0) := CONSTANT equal : STD_LOGIC_VECTOR (1 DOWNTO 0) := CONSTANT not_equal: STD_LOGIC_VECTOR (1 DOWNTO 0) := BEGIN PROCESS (opcode,a,b) BEGIN CASE opcode IS WHEN plus => result <= a + b; -- a、b相加 WHEN minus => result <= a - b; -- a、b相减 WHEN equal => -- a、b相等 IF (a = b) THEN result <= x"01"; ELSE result <= x"00"; END IF; WHEN not_equal => -- a、b不相等 IF (a /= b) THEN result <= x"01"; ELSE result <= x"00"; END IF; END CASE; END PROCESS; END behave;

VHDL程序并行语句的应用

VHDL程序并行语句的应用

1、条件式信号设置语句:When-Else 语法格式是:
2、选择式信号设置语句:With-Select 语法格式:
VHDL程序并行语句的应用
一、实训目的
●巩固编译、仿真VHDL文件的方法
●掌握VHDL程序并行语句的应用
二、实训器材(计算机与QUARTUSII工具软件)
三、实训指导
(一)实训原理
下面是8421BCD-余三码转换电路的真值表,应用VHDL并行语句设计一个8421BCD-余3码转换电路,并通过编译仿真。

(二)实训步骤
1.设计输入VHDL文件
(1)建立工程项目
(2)建立VHDL文件
(3)用条件信号赋值语句或者选择信号赋值语句等并行语句设计VHDL文件。

2.编译仿真VHDL文件
(1)编译VHDL文件。

如果有错误,检查纠正错误,直至最后通过。

(2)仿真VHDL文件。

认真核对输入/输出波形,检查设计的功能正确与否。

四、实训报告
请根据实训所得结果在实训报告纸上撰写报告。

五、注意事项
1、填写实验记录本
2、新建工程项目的项目名称与程序中的实体名称必须保
持一致
3、波形仿真的参数设置
4、仿真时,输入端口波形设置尽量全面
5、实验完成后,整理实验台及保持实验室卫生。

六、附加
用直接赋值语句完成本次实验内容。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
顺序语句有三个特点: a.所有语句的执行是顺序进行的; b.每条语句的执行和其所在的位置有关; c.顺序语句的输出不仅依赖于输入,而且还受位置的影响。
顺序语句
(1)Process语句 (2)If-Else语句 (3)Case-When语句 (4)Null语句 (5)For-Loop语句 (6)Wait until语句 (7)变量赋值语句 (8) Procedure(过程)调用语句
复习2 数据类型
VHDL中的运算符
逻辑运算: and 逻辑与 or 逻辑或 nand 与非 nor 或非 xor 异或 算术运算符:
xnor not
同或
逻辑非
+ * / ** mod rem abs
加 减 乘 除 乘方 求模 求余 求绝对值
复习2 数据类型
关系运算符: = 等于 /= 不等于 < 小于 <= 小于或等于 > 大于 >= 大于或等于 注:其中‘<=‟操作符也 用于表示信号的赋值操 作。
Case expression Is When constant_value1 => statement1; {statement;} When constant_value2 => statement2; {statement;] When others => statement3; {statement;} End case;
一、配置语句CONFIGURATION 定义格式: Configuration 配置名 of 实体名 is for 选用的结构体名 end for; end configuration 配置名 ;
例程
【编程练习1】:2输入与门
a b
电路真值表
c
a 0 1 0 1
b 0 0 1 1
c 0 0 0 1
标准逻辑类型对数 字逻辑电路的逻辑 特性描述更加完整, 真实,因此在VHDL 程序中,对逻辑信 号的定义通常采用 标准逻辑类型.
复习2 数据类型
逻辑序列
位序列 (Bit_Vector)
标准逻辑序列 (Std_Logic_Vector)
复习2 数据类型
序列的使用 Signal data: Std_Logic_Vector( 7 downto 0); Signal addr: Bit_Vector ( 0 to 3);
数据对象 数据类型 语句
复习
(1)Library和Package部分
作用:声明在实体和结构体定义中将用到的 数据类型、元件或子程序等。 声明格式: Library 库名; Use 库名. PACKAGE名.All; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;
(一)、进程语句(Process语句)
格式: [Process-label:]Process[(Sensitivity list)] [Variable declarations] --变量声明 Begin [wait until statement] [variable assignment statements] [if statements] [case statements] [Procedure调用语句 ] End Process;
1、when…else 语句
Architecture Na of and2 is Begin c <= „0‟ when a= „0‟ and b = „0‟ else „0‟ when a= „1‟ and b = „0‟ else „0‟ when a= „0‟ and b = „1‟ else „1‟; -- 符号<=为信号直接赋值符。 End Na; -- 结构体Na Architecture Nb of and2 is Begin c <= a and b; -- and 为逻辑与操作 End Nb; --结构体Nb
例程
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; Entity and2 is Port( a : in bit; b : in bit; c : out bit); End and2; --实体定义结束。
(说明):statements是指“语句”
进程语句Process
(1)一个结构体当中可以有多个Process 语 句,Process 语句是同时执行的并行语句。 (2)Process内的语句却是顺序执行的顺序语 句。 (3)多进程之间的信息通过信号对象来传递。
进程语句Process 敏感表(Sensitivity list)包括进程的一 些信号,当敏感表中的某个信号变化时进 程才被激活,进程内的顺序语句被执行。 当进程结束时,进程内的输出信号值被 更新,进程进入等待(睡眠)状态,直到 敏感表中的某一信号发生变化,进程被再 次激活。
(二)条件语句IF-ELSE If expression1 Then statement1; [statement;] [ Elsif expression2 Then statement2; [statement;] Else statement3; [statement;]] End if;
(三)选择语句 CASE-WHEN
复习2 数据类型
逻辑数据类型 (1)布尔代数(Boolean)型 ; (2)位(Bit); (3)标准逻辑(Std_logic);
type BOOLEAN is (FALSE, TRUE) ; type BIT is (‘0’, ‘1’);
复习2 数据类型
标准逻辑类型
Type Std_Logic Is ( „U‟, --Undefined(未初始化) „X‟ , --Forcing Unknown(强未知) „0‟ , --Forcing 0(强0) „1‟ , --Forcing 1(强1) „Z‟ , --Hign Impedance(高阻) „W‟, --Weak Unknown(弱未知) „L‟ , --Weak 0(弱0) „H‟ , --Weak 1(弱1) „-‟ , --Don‟t Care(忽略) )
FPGA应用技术
任务2.2 VHDL并行语句
第6周周四1、2节
复习
VHDL语言的程序结构 LIBRARY(USE)----- 库 PACKAGE ------------- 程序包集合 ENTITY -------------- 实体 ARCHITECTURE ----- 结构体 CONFIGURATION ---- 配置语句
复习
Library IEEE; Use IEEE.STD_logic_1164.all; Entity gate is Port( a,b : in bit; y,f : out bit); End gate; Architecture a1 of gate is Begin y <= a and b; f <= a or b; End a1;
IN ;OUT;INOUT ;BUFFER 端口模式可用下图说明:(黑框代表一个设计或模块)
IN
OUT
BUFFER
INOUT
复习
(3)ARCHITECTURE定义区
实体的实现。即说明电路的逻辑功能,输出与输入之
间的逻辑关系。
定义格式: Architecture 结构体名 of 实体名 is
[ 声明语句;(内部信号、变量、常数,元件,子程序声明)]
复习
VHDL程序 Library std; Use std.standard.all; Entity and2 is Port( a,b : in bit; c : out bit); End and2; Architecture a1 of and2 is Begin c <= a and b; End a1; C程序
并列语句 并列语句一般处于进程(PROCESS)的外 部。所有并列语句都是并行执行的,即与 它们出现的先后次序无关。 并列语句有三个特点: a. 所有语句的执行是并行的; b. 每条语句的执行和其所在程序中的前后位 置无关; c. 并列语句的输出仅仅依赖于输入,没有其 它的限制条件。
Begin
并行描述语句; End 结构体名;
一、配置语句CONFIGURATION
(4)CONFIGURATION部分 一个完整VHDL电路设计必须有一个实体和对应的 结构体,即实体和结构体对构成一个完整的VHDL 设计。 一个实体可对应一个结构体或多个结构体,即 一个实体可以有不同的描述方式。 作用:当实体有多个结构体时,系统默认实体选用 最后一个结构体,利用CONFIGURATION语句可 以任意选择采用哪一个结构体。
序列的范围大小声明方式: To, Downto
复习2 数据类型
序列的分解与合成 Signal A: Std_Logic_Vector( 3 downto 0); Signal B: Std_Logic_Vector( 0 to 3); Signal C: Std_Logic_Vector( 0 to 1); Signal D: Std_Logic_Vector( 1 downto 0); C<= A( 2 downto 1); B<= A(3) & D & „1‟;
例程
Configuration s1 of and2 is for na end for; end configuration s1; --结构体配置结束。
复习2 数据类型
VHDL语言中的基本数据类型
布尔代数(Boolean) 逻辑类型 位 (Bit) 标准逻辑 (Std_Logic) 整数 (Integer) 数值类型 实数 (Real)
相关文档
最新文档