VHDL程序的主要描述语句
- 格式:ppt
- 大小:3.62 MB
- 文档页数:91


VHDL语言的主要描述语句
按照语句的执行顺序对VHDL语言进行分类,包含两类语句:
并行描述语句 该语句的执行与书写顺序无关,总是同时被执行
顺序描述语句 从仿真的角度,该语句是顺序执行的
进程语句(PROCESS)是最典型的并行语句,一个构造体内可以有几个进程语句同时存在,而且并发执行。但是进程内部的所有语句都是顺序语句。
一、 顺序描述语句
顺序描述语句只能用在进程和子程序中,它和其他高级语言一样,其语句是按照语句的出现的顺序加以执行的。如下分别介绍有关的顺序描述语句.
1. WAIT语句
进程在执行过程中总是处于两种状态:执行或挂起,进程的状态变化受等待语句的控制,当进程执行到等待语句,就被挂起,并等待再次执行进程.
等待语句的格式:
*WAIT 无限等待
*WAIT ON 敏感信号变化
*WAIT UNTIL 条件满足
*WAIT FOR 时间到
(1)WAIT ON
格式:WAIT ON 信号[,信号]
例5-1
PROCESS(a,b)
BEGIN
y<=a AND b;
END PROCESS;
该例中的进程与下例中进程相同:
例5-1
PROCESS
BEGIN
y<=a AND b;
WAIT ON a,b;
END PROCESS;
例5-2
PROCESS(a,b)
BEGIN
y<=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;
常用程序:
● 1/4位加法器、1/4位减法器、2/4/8位数据选择器、D/8D锁存器、D触发器、4位移位寄存器、2-4/3-8译码器、用with-select或者when-else设计同或门、异或门和或非门等、根据逻辑表达式编程等等,如F= ABC+(D+E)+GH。
加减法器件的设计要考虑如何采用元件例化语句和生成语句设计。
六、十进制计数器的设计
● 布置的第3章课后作业
看了几本作业,大概清楚了哪些程序有难度,下面仅列出部分程序供大家参考:
【减法器】
1位减法器:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.all;
entity subber1 is
port(a,b,cin:in std_logic;
s:out std_logic;
cout: out std_logic);
end subber1;
architecture one of subber1 is
begin
s<= (a xor b) xor cin;
cout<= ((not a)nand b)nand(not(a xor b) nand cin);
end one;
4位减法器:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE WORK.my_pkg.all;
entity subber4 is
port(a,b:in std_logic_vector(3 downto 0);
cin: in std_logic;
s:out std_logic_vector(3 downto 0);
cout: out std_logic);
end subber4;
architecture one of subber4 is
signal cout0,cout1,cout2: std_logic;
VHDL语言的主要描述语句
按照语句的执行顺序对VHDL语言进行分类,包含两类语句:
并行描述语句 该语句的执行与书写顺序无关,总是同时被执行
顺序描述语句 从仿真的角度,该语句是顺序执行的
进程语句(PROCESS)是最典型的并行语句,一个构造体内可以有几个进程语句同时存在,而且并发执行。但是进程内部的所有语句都是顺序语句。
一、 顺序描述语句
顺序描述语句只能用在进程和子程序中,它和其他高级语言一样,其语句是按照语句的出现的顺序加以执行的。如下分别介绍有关的顺序描述语句.
1. WAIT语句
进程在执行过程中总是处于两种状态:执行或挂起,进程的状态变化受等待语句的控制,当进程执行到等待语句,就被挂起,并等待再次执行进程.
等待语句的格式:
*WAIT 无限等待
*WAIT ON 敏感信号变化
*WAIT UNTIL 条件满足
*WAIT FOR 时间到
(1)WAIT ON
格式:WAIT ON 信号[,信号]
例5-1
PROCESS(a,b)
BEGIN
y<=a AND b; END PROCESS;
该例中的进程与下例中进程相同:
例5-1
PROCESS
BEGIN
y<=a AND b;
WAIT ON a,b;
END PROCESS;
例5-2
PROCESS(a,b)
BEGIN
y<=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;
实验三 VHDL程序顺序语句的应用
一、 实验目的
1. 巩固编译、仿真VHDL文件的方法
2. 掌握VHDL程序顺序语句的应用
二、 实验器材
计算机与QuartusII工具软件
三、 实验原理
下面是8路数据分配器的真值表,应用VHDL顺序语句设计一个8路数据分配器电路并通过编译与仿真。
输入 输出
S2 S1 S0 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
0 0 0 0 0 0 0 0 0 0 d
0 0 1 0 0 0 0 0 0 d 0
0 1 0 0 0 0 0 0 d 0 0
0 1 1 0 0 0 0 d 0 0 0
1 0 0 0 0 0 d 0 0 0 0
1 0 1 0 0 d 0 0 0 0 0
1 1 0 0 d 0 0 0 0 0 0
1 1 1 d 0 0 0 0 0 0 0
四、 实验步骤
1. 在D盘下新建文件夹:
D:\xzq8
2. 新建项目xzq8:
1)打开QuartusII
2)File→New Project Wizard ……
3)选择项目文件夹路径:
D:\xzq8
4)输入项目名和文件名:xzq8
5)点击“Next”,直到最后。
3. 建立VHDL文件xzq8:
1)File→New 2)选择VHDL File
4. 输入程序。xzq8.vhd
5. 保存设计文件。Save:路径
(D:\xzq8)
6. 编译。如有错误,重复第4、5步。
7. 新建波形仿真文件
1)File→New
8. 新建波形仿真文件
9. 导入输入输出引脚并设置输入信号s2 s1 s0
10. 保存波形文件,文件名为xzq8,文件类型为:vwf
11. 执行processing→start simulation
命令,进行波形仿真,并记录仿真结果。
四、完成实验报告。
预习作业:用VHDL顺序语句(case语句)编写8路数据分配器