VHDL——学习开篇1(入门体验与顺序执行)

本文介绍了VHDL的基础知识,包括2选1选择器和锁存器的设计,并详细解析了VHDL的顺序执行机制,涵盖了赋值语句、流程控制语句等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0、背景

明明已经掌握了verilog HDL,为什么还要掌握VHDL呢。因为,你如果不掌握VHDL,意味着,你将要丢失很多资料,不少书籍,不少资料还是用VHDL实现的,包括国外的数字信号处理。在开启这个VHDL文档之前,我其实在YouTube上面已经大概感受过VHDL了,这样非常有助于按照书籍来学习,直接看语法书籍,可能效果甚微。下面,我们只需要使用语法书籍按班就部的地学习即可。

1、VHDL入门体验

1.1 2选1选择器

library ieee;
use ieee.std_logic_1164.all;   /*IEEE库使用说明*/

ENTITY mux21 IS				/*器件mux21的外部接口信号书名,port相当于器件的引脚*/
port (a,b: in std_logic;
		  s: in std_logic;
		  y: out std_logic);
end entity mux21;

architecture one of mux21 is	/*器件mux21的内部工作逻辑描述,即为实体描述的器件功能机构*/
begin
	y<=a when s='0' else
		b  when s='1';

end  architecture one;




解释:
实体ENTITY说明:实体的电路意义相当于器件,在电路原理图上相当于元件符号。实体是一个完整的、独立的语言模块,它描述了接口信息,port所描述的就相当于电路器件的外部引脚。同时指明了端口a\b\s和y信号的数据类型是符合IEEE库中std_logic_1164程序包中的标准数据位,std_logic中所定义的数据类型。

**结构体(architecture)**说明:描述mux21的内部逻辑功能,在电路上相当于器件的内部电路结构。符号“<=”是信号赋值符,是信号传递的意思,“y<=a”表示将a获得的信号赋给y输出端.

需要指出来的是,实体和结构体分别是以“END ENTITY MUX21”和“END ARCHITECTURE ONE”语句结尾的,这是符合VHDL新版本 IEEE TSD 1076_1993的语法要求的,若根据VHDL 87版本 这两条结尾语句只需要写成end mux21 和end one即可。
一个可综合的VHDL描述的最小和最基本的逻辑结构中,IEEE标准库说明、实体和结构体是最基本的和不可缺少的三个部分。

1.2 锁存器的设计

锁存器的引脚D是数据输入端口,ENA是数据锁存使能控制端口,当ENA为高电平时,允许数据锁入;低电平时进制数据锁入,Q为数据输出端口。

在这里插入图片描述
也就是说Q始终是随着D的,C是锁存器的控制信号。

library ieee;
use ieee.std_logic_1164.all;

entity Latch_p is
port(D:in std_logic;
	  ena:in std_logic;
	  Q:out std_logic
	  );
end entity ;

architecture one of Latch_p IS
signal sig_save:std_logic;
begin
	process (D,ena)
		begin
			if ena='1' then
				sig_save<=D;
			end if;
			   Q<=sig_save;
	end process;
end architecture one;

SIGNAL由信号赋值语句SIGNAL…定义了一个信号变量,它的功能是存储来自外部信号D的被锁存的数据位。
使用了一个进程语句结构PROCESS(D,ENA)–》END PROCESS

进程结构中的逻辑描述表明,如果使能控制信号ENA为高电平,则将数据输入端D的最新值传入信号变量sig_save,然后通过sig_save,将此值传给信号输出端Q;反之,若使能控制信号ENA为低电平,则将sig_save上的原值传给信号输出端Q,即保留原值不变。

程序中的IF—THEN语句结构所给出的描述方式,是令VHDL综合器引入时序元件的常用方法,其特点是当IF引导的逻辑表达式满足条件时,作数据传入操作:sig_save<=D,而当不满足条件时,不作任何描述就以END IF 结束IF–THEN语句

程序行“PROCESS(D,ENA)”中的(D,ENA)称为敏感信号表,这说明信号D和ENA中的任何信号发生变化时,都将引起本进程的执行

1.3 总结与注释

在这里插入图片描述
在VHDL中注释采用–

2、VHDL顺序执行

每一条顺序语句的执行(指的是仿真执行)顺序与他们的书写顺序基本是一致的,顺序语句只能出现在进程process和子程序中,子程序包括function和procedure(函数和过程)
但应该值得注意的是,这里的顺序是从仿真软件的运行或者顺应VHDL语法的编程逻辑思路而言的,其相应的硬件逻辑工作方式并未如此。关于这点,希望要注意区分VHDL语言的软件仿真行为及描述综合后的硬件行为间的差异。
在CHDL中,一个进程是由一系列顺序语句偶成的,而进程本身属于并行语句。
VHDL中有如下6类基本顺序语句:
赋值语句
流程控制语句
等待语句
子程序调用语句
返回语句
空操作语句

2.1 赋值语句

VHDL严格规定了,赋值目标与赋值源的数据类型必须严格一致。
变量赋值目标 := 赋值源;
信号赋值目标 < = 赋值源;

在信号赋值中,有2点需要注意,第一点是,当在同一进程中,同一信号赋值目标有多个赋值源时,信号赋值目标获得的是最后一个赋值源的赋值,其前面相同的赋值目标不作任何变化。

variable a,b:std_logic;
signal c1:std_logic_vector(1 to 4);
a:='1';
b:='0';
c1:="1100";--其中a\b\c1都属于标识符赋值目标

signal a,b:std_logic_vector (0 to 3);
signal i:integer range 0 to 3;
signal y,z:std_logic;
a<="1010";
b<="1000";
a(3)<=z;

variable a,b:std_logic_vector(1 to 4);
a(1 to 2):="10";
a(1 to 4):="1011";--段下标元素赋值目标


signal a,b,c,d:std_logic;
signal s:std_logic_vector(1 to 4);
variable e,f:std_logic;
variable g:std_logic_vector(1 to 2);
variable h:std_logic_vector(1 to 4);
s<=('0','1','0','0');
(a,b,c,d)<=s;

2.2 流程控制语句

流程控制语句通过条件控制开关决定是否执行一条或几条语句,或重复执行一条或几条语句,或跳过一条或几条语句。
流程控制语句共有五种:
if
case
loop
next
exit

2.21 if语句

在这里插入图片描述
与第一种IF语句相比较,第二种IF语句差异仅仅在于当所测条件为false时候,并不直接跳到end if结束条件句的执行,而是转向else以下的另一段顺序语句进行执行。

library ieee;
use ieee.std_logic_1164.all;
entity mux2_2_1 is
port (din: in std_logic_vector(0 to 7);
		output:out std_logic_vector(0 to 2)   );
end mux2_2_1;

architecture behave of mux2_2_1 is
signal sint: std_logic_vector (4 to 0);
begin
process (din)
begin
if(din(7)='0')then
output<="000";--(din(7)='0')
elsif (din(6)='0') then
output <="100" ; --(din(7)='1') AND din(6)='0')
elsif  (din(5)='0') then
output<="010";--(din(7)='1'AND (din(6)='1')AND(din(5)='0')
elsif (din(4)='0') then
output<="110";
elsif (din(3)='0') then
output<="001";
elsif (din(2)='0') then
output<="101";
elsif (din(1)='0') then
output<="011";
else
output<="111";
end if;
end process;
end behave;


在这里插入图片描述

2.22 case语句

在这里插入图片描述
除非所有条件句中的选择值能完整覆盖case语句中表达式的取值,否则最末一个条件句中的选择必须用“others”表示,它表示已给的所有条件句中未能列出其它可能的取值。关键词others只能出现一次,且作为最后一种条件取值。使用others的目的是为了使条件句中的所有选择值能够涵盖表达式的所有取值,以免综合器会插入不必要的锁存器。这一点对于定义为std_logic和std_logic_vector数据类型的值尤其重要,因为这些数据对象的取值除了1和0以外,还可能有其他的取值,如高阻态z\不确定态x等

library ieee;
use ieee.std_logic_1164.all;

entity mux4_1 is--声明一个实体
port(s1,s2:in std_logic;
		a,b,c,d: in std_logic;
		z:out std_logic);
end entity;

architecture activ of mux4_1 is
signal s: std_logic_vector (1 downto 0);
begin
	s<=s1&s2;
process (s,a,b,c,d)--注意,这里必须要以s为敏感信号,而并非以s1和s2
begin
	case s IS
			when "00" => z<=a;
			when "01" => z<=b;
			when "10" => z<=c;
			when "11" => z<=d;
			when others => z<='X';   --注意,这里的X必须大写代表高阻态
	end case;
end process;
end activ;


与if语句相比较,case语句组的程序可读性比较好,这是因为它把条件中所有可能出现的情况全部例了出来,可执行条件一目了然。而且case语句的执行过程不像if语句那样有一个逐项条件顺序比较的过程。case语句中的条件句的次序是不重要的,它的执行过程更接近于并行方式。一般的,综合后,对相同的逻辑功能,case语句比if的描述好用更多的硬件资源,不但如此,对于有的逻辑,case无法描述,只能用if语句来描述。

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity mux4_1 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 entity mux4_1;

architecture behave of mux4_1 is
constant plus : std_logic_vector (1 downto 0):=b"00";
constant minus : std_logic_vector (1 downto 0):=b"01";
constant equal : std_logic_vector (1 downto 0):=b"10";
constant not_equal : std_logic_vector (1 downto 0):=b"11";
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;

EDA 技术丛书 VHDL 实用教程 潘 松 王国栋 编著 内 容 简 介 本书比较系统地介绍了 VHDL 的基本语言现象和实用技术 全书以实用和可操作为基点 简洁而又不失完整地介绍了 VHDL 基于 EDA 技术的理论实践方面的知识其中包括 VHDL 语句语法基础知识 第 1 章 第 7 章 逻辑综合编程技术 第 9 章有限状态机及其设计 第 10 章 基于 FPGA 的数字滤波器设计 第 11 章 多种常用的支持 VHDL 的 EDA软件使用介绍 第 12 章 VHDL 数字系统设计实践介绍 第 13章 和大学生电子设计赛题的 VHDL 应用介绍 第 14 章 全书列举了大量 VHDL 设计示例 其中大部分经第 12 章介绍的 VHDL 综合器编译通过 第 13 章的程序绝大部分都通过了附录介绍的 EDA 实验系统上的硬件测试 可直接使用 书中还附有大量程序。设计和实验/实践方面的习题。 本书可作为高等院校的电子工程 通信 工业自动化 计算机应用技术 电子对抗仪器仪表 数字信号处理 图像处理等学科领域和专业的高年级本科生或研究生的 VHDL或 EDA 技术课程的教材及实验指导 也可作为相关专业技术人员的自学参考书。 目 录 第 1 章 绪 论....................................................................................................................1 § 1.1 关于 EDA...............................................................................................................1 § 1.2 关于 VHDL............................................................................................................3 § 1.3 关于自顶向下的系统设计方法............................................................................5 § 1.4 关于应用 VHDL 的 EDA 过程.............................................................................6 § 1.5 关于在系统编程技术............................................................................................9 § 1.6 关于 FPGA/CPLD 的优势...................................................................................10 § 1.7 关于 VHDL学习.............................................................................................10 第 2 章 VHDL 入门..............................................................................................................12 § 2.1VHDL 设计多路选择器和锁存器 .................................................................12 § 2.2 用 VHDL 设计全加器.........................................................................................15 第 3 章 VHDL 程序结构......................................................................................................19 § 3.1 实 体 ENTITY ..............................................................................................19 § 3.2 结构体 ARCHITECTURE ............................................................................26 § 3.3 块语句结构 BLOCK .....................................................................................29 § 3.4 进程 PROCESS .............................................................................................32 § 3.5 子程序(SUBPROGRAM)....................................................................................35 3.5.1 函数 FUNCTION ..................................................................................36 3.5.2 重载函数 OVERLOADED FUNCTION ..............................................39 3.5.3 过程 PROCEDURE ...............................................................................42 3.5.4 重载过程 OVERLOADED PROCEDURE ..........................................44 § 3.6 库 LIBRARY .................................................................................................45 § 3.7 程序包 PACKAGE ........................................................................................48 § 3.8 配置 CONFIGURATION ..............................................................................51 习题............................................................................................................................ 53 第 4 章 VHDL 语言要素......................................................................................................55 § 4.1 VHDL 文字规则..................................................................................................55 § 4.2 VHDL 数据对象..................................................................................................58 4.2.1 变量(VARIABLE)........................................................................................59 4.2.2 信号(SIGNAL).............................................................................................60 4.2.3 常数(CONSTANT).......................................................................................63 § 4.3 VHDL 数据类型..................................................................................................64 4.3.1 VHDL 的预定义数据类型..........................................................................65 4.3.2 IEEE 预定义标准逻辑位矢量.................................................................68 4.3.3 其它预定义标准数据类型 ..........................................................................70 4.3.4 用户自定义数据类型方式 ..........................................................................71 4.3.5 枚举类型......................................................................................................73 4.3.6 整数类型和实数类型..................................................................................74 4.3.7 数组类型......................................................................................................74 4.3.8 记录类型......................................................................................................76 4.3.9 数据类型转换..............................................................................................78 § 4.4 VHDL 操作符......................................................................................................82 4.4.1 操作符种类..................................................................................................82 4.4.2 逻辑操作符..................................................................................................83 4.4.3 关系操作符..................................................................................................85 4.4.4 算术操作符..................................................................................................87 4.4.5 重载操作符..................................................................................................93 习题...............................................................................................................................94 第 5 章 VHDL 顺序语句......................................................................................................95 § 5.1 赋值语句..............................................................................................................95 5.1.1 信号和变量赋值..........................................................................................96 5.1.2 赋值目标......................................................................................................97 § 5.2 流程控制语句......................................................................................................99 5.2.1 IF 语句..........................................................................................................99 5.2.2 CASE 语句.................................................................................................102 5.2.3 LOOP 语句.................................................................................................106 5.2.4 NEXT 语句.................................................................................................109 5.2.5 EXIT 语句..................................................................................................110 § 5.3 WAIT 语句.........................................................................................................111 § 5.4 子程序调用语句................................................................................................115 § 5.5 返回语句(RETURN)..........................................................................................118 § 5.6 空操作语句(NULL)...........................................................................................119 § 5.7 其它语句和说明................................................................................................120 5.7.1 属性(ATTRIBUTE) 描述定义语句......................................................120 5.7.2 文本文件操作(TEXTIO)...........................................................................125 5.7.3 ASSERT 语句.............................................................................................127 5.7.4 REPORT 语句............................................................................................128 5.7.5 决断函数....................................................................................................128 习题...............................................................................................................................129 第 6 章 VHDL 并行语句....................................................................................................131 § 6.1 进程语句............................................................................................................132 § 6.2 块 语 句............................................................................................................137 § 6.3 并行信号赋值语句............................................................................................138 6.3.1 简单信号赋值语句....................................................................................138 6.3.2 条件信号赋值语句....................................................................................138 6.3.3 选择信号赋值语句....................................................................................139 § 6.4 并行过程调用语句............................................................................................141 § 6.5 元件例化语句....................................................................................................143 § 6.6 类属映射语句....................................................................................................145 § 6.7 生成语句............................................................................................................146 习题.............................................................................................................................151 第 7 章 VHDL 的描述风格................................................................................................153 § 7.1 行为描述............................................................................................................153 § 7.2 数据流描述........................................................................................................155 § 7.3 结构描述............................................................................................................156 习题.............................................................................................................................157 第 8 章 仿 真................................................................................................................158 § 8.1 VHDL 仿真........................................................................................................158 § 8.2 延时模型............................................................................................................162 8.2.1 固有延时....................................................................................................163 8.2.2 传输延时....................................................................................................163 § 8.3 仿 真 d..............................................................................................................164 § 8.4 仿真激励信号的产生........................................................................................164 § 8.5 VHDL 测试基准................................................................................................166 § 8.6 VHDL 系统级仿真............................................................................................169 习题.............................................................................................................................170 第 9 章 综 合................................................................................................................171 § 9.1 VHDL 综合........................................................................................................171 § 9.2 有关可综合性的考虑........................................................................................174 § 9.3 寄存器引入方法................................................................................................175 9.3.1 容易发生的错误........................................................................................175 9.3.2 常规寄存器的引入....................................................................................180 9.3.3 具有时钟门控结构寄存器的引入............................................................183 9.3.4 同步置位 复位功能的引入....................................................................184 9.3.5 异步置位 复位功能的引入....................................................................184 § 9.4 引入寄存器的有关技巧....................................................................................186 § 9.5 三态门引入方法................................................................................................190 § 9.6 资源共享............................................................................................................194 习题.............................................................................................................................196 第 10 章 有限状态机 FSM.................................................................................................198 § 10.1 一般状态机设计..............................................................................................199 § 10.2 状态机的状态编码..........................................................................................210 § 10.3 状态机剩余状态处理......................................................................................212 习题.............................................................................................................................213 第 11 章 数字滤波器设计 ..................................................................................................215 § 11.1 基于 FPGA 的数字滤波器优势.....................................................................215 § 11.2 FIR 数字滤波器设计......................................................................................217 11.2.1 FIR 滤波器结构原理简要.......................................................................217 11.2.2 FIR 滤波器设计方案确定.......................................................................220 11.2.3 FIR 滤波器主系统设计...........................................................................223 11.2.4 FIR 滤波器附加功能实现.......................................................................227 § 11.3 IIR 数字滤波器设计.......................................................................................229 11.3.1 IIR 滤波器设计方案................................................................................229 11.3.2 IIR 滤波器的实现....................................................................................232 习题.............................................................................................................................234 第 12 章 VHDL 设计平台使用向导..................................................................................235 § 12.1 ispVHDL 使用向导..........................................................................................235 12.1.1 ispLSI 系列介绍.......................................................................................236 12.1.2 ispVHDL 设计套件介绍..........................................................................236 12.1.3 ispVHDL 设计向导..................................................................................237 § 12.2 Altera MAX+plus II VHDL 使用向导 ............................................................246 § 12.3 MAX+plus II Synplify 接口........................................................................254 § 12.4 Xilinx Foundation VHDL 使用向导................................................................256 12.4.1 Foundation 设计流程...............................................................................256 12.4.2 VHDL 输入方式设计向导......................................................................257 习题...............................................................................................................................264 第 13 章 VHDL 设计实践实验......................................................................................265 § 13.1 8 位预置加法计数器设计 ...............................................................................265 实验习题...................................................................................................................267 § 13.2 宽位可预置中断处理器 ...............................................................................267 实验习题...................................................................................................................268 § 13.3 静态随机存储器 SRAM ..........................................................................269 实验习题...................................................................................................................270 § 13.4 堆栈设计..........................................................................................................270 实验习题...................................................................................................................271 § 13.5 8 位硬件加法器设计.......................................................................................271 实验习题...................................................................................................................273 § 13.6 8 位硬件乘法器设计.......................................................................................273 实验习题...................................................................................................................278 § 13.7 乒乓球游戏电路设计......................................................................................278 实验习题...................................................................................................................283 § 13.8 序列检测器设计..............................................................................................283 实验习题...................................................................................................................284 § 13.9 正负脉宽数控调制信号发生器设计 ..............................................................284 实验习题...................................................................................................................286 § 13.10 “梁祝 乐曲演奏电路设计...........................................................................287 实验习题...................................................................................................................292 § 13.11 RS232 通信控制电子琴.................................................................................292 实验习题...................................................................................................................295 § 13.12 数字频率计设计............................................................................................296 实验习题...................................................................................................................299 § 13.13 PC 机 单片机 FPGA 双向通信...............................................................299 实验习题...................................................................................................................301 § 13.14 VGA 显示器彩条信号发生器设计...............................................................301 实验习题...................................................................................................................304 § 13.15 A/D 采样控制器设计 ....................................................................................304 实验习题...................................................................................................................308 § 13.16 D/A 接口电路波形发生器设计.................................................................308 实验习题...................................................................................................................310 § 13.17 MCS-51 单片机 CPLD 接口逻辑设计 .....................................................310 13.17.1 总线方式................................................................................................310 13.17.2 独立方式..............................................................................................312 实验习题...................................................................................................................313 § 13.18 PS/2 键盘接口逻辑设计................................................................................314 § 13.19 7 段 LED 译码显示电路设计........................................................................315 实验习题...................................................................................................................316 第 14 章 电子设计竞赛实例介绍......................................................................................317 § 14.1 多功能等精度频率计......................................................................................317 14.1.1 测频原理..................................................................................................317 14.1.2 测频专用模块工作原理和设计..............................................................318 14.1.3 频率计功能模块的 VHDL 描述.............................................................320 14.1.4 测频主系统实现......................................................................................323 14.1.5 专用模块测试控制信号说明..................................................................324 §14.2 电子设计竞赛开发板.......................................................................................325 习题.............................................................................................................................326 附录 1 GW48 型 EDA 实验开发系统使用介绍 ...............................................................327 附录 2 一些 FPGA 和 CPLD 芯片引脚图.........................................................................344 本书有PDF格式跟word文档格式,两种文件格式方便读者阅读的方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值