VHDL笔记第一部分

设计流程

设计流程

程序结构

在这里插入图片描述

VHDL程序设计约定

  1. 语句结构描述中的方括号“[]”内的内容为可选项。
  2. 对于VHDL的编译器和综合器来说,程序不区分大小写。
  3. 程序中的注释使用双横线“–”。
  4. 书写程序时使用程序锁紧格式,同层次对其,底层次依次锁紧。.
  5. 各个源程序文件的命名均与其实体名一致。

实体(entity)部分说明

  1. 实体语句结构
    实体说明单元的一般语句结构:
  ENTITY  实体名  IS
     [GENERIC ( 类属表 );]
     PORT ( 端口表 );
  END 【ENTITY】 实体名;

2.GENERIC类属说明语句
类属说明的一般书写格式如下:

GENERIC (常数名:数据类型 [:=设定值 ];
			…
      常数名:数据类型 [:=设定值 ] )
类属说明语句的意义
类属说明语句是端口界面常数,放在实体或结构体前的说明部分。

通过对类属参数值的设定,可容易的改变一个设计实体内部电路的结构和规模
类属值的地位十分接近常数,但能从外部动态的接收赋值,类似于端口
注: 综合器仅支持数据类型为整型的类属值

若实体内大量使用了addrwidth参数表示地址宽度,则当需要改变地址宽度时,只需一次性在语句GENERIC中改变addrwidth的设定值,则结构体中所有相关的地址宽度都随之改变,由此可方便地改变整个设计的硬件规模和结构。

ENTITY mcu IS
GENERIC (addrwidth: INTEGER:= 16);
PORT ( add_bus:OUT  STD_LOGIC_VECTOR(addrwidth-1  DOWNTO 0));

第二句的类属说明 相当于 定义了一个地址宽度常数,如下

   add_bus:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);

PORT(端口)说明

PORT说明是对一个设计实体界面的说明(对设计实体与外部电路的接口说明,包括对每一接口的输入输出模式和数据类型的定义。其格式如下:

PORT ( 端口名 : 端口模式  数据类型 ;{ 端口名 : 端口模式  数据类型} ) ;

其中的端口名是设计者为实体的每一个对外通道所取的名字,端口模式是指这些通道上的数据流动方式。数据类型是指端口上流动的数据的表达格式或取值类型,VHDL要求只有相同数据类型的端口信号和操作数才能相互作用。

端口模式

在这里插入图片描述

数据类型
			标准逻辑位    STD_LOGIC  或    BIT        
			标准逻辑矢量  STD_LOGIC.VECTOR 或 BIT_VECTOR
			注:IEEE库中STD_LOGIC_1164包中定义
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY nand2 IS
   GENERIC (trise:TIME:=1ns;
                        tfall:TIME:=1ns);
   PORT (a: IN STD_LOGIC;
               b: IN STD_LOGIC;
               c: OUT STD_LOGIC);
END nand2;

等同于
在这里插入图片描述

结构体(ARCHITECTURE) 部分说明
结构体用于描述设计实体的内部结构以及实体端口间的逻辑关系
功能特征:结构体具体实现一个实体
关系

在这里插入图片描述

特点

1.同一结构体不能为不同的实体所拥有。
2.结构体不能单独存在。
3.具有多结构体的实体,需用配置语句指明用于综合和仿真的结构体。

结构体的语句格式
ARCHITECTURE 结构体名 OF 实体名 IS
   [说明语句;]
BEGIN
   功能描述语句;
END [ARCHITECTURE] 结构体名;

在这里插入图片描述

结构体的说明语句

作用:对结构体的功能描述语句中将要用到的信号(SIGNAL),常数(CONSTANT),元件(COMPONENT),函数(FUNCTION)和过程(PROCEDURE)等加以说明
功能描述语句
在这里插入图片描述
注意: 每一语句的内部可能含有并行或顺序运行的逻辑描述语句

ARCHITECTURE behav OF nand2 IS
BEGIN
  PROCESS (a, b)
    VARIABLE cdf: STD_LOGIC;
  BEGIN
      cdf:= a NAND b;            		--向变量赋值
    IF cdf ='1' THEN
       c<=TRANSPORT cdf AFTER trise;
    ELSIF cdf ='0'THEN
       c<=TRANSPORT cdf AFTER tfall;
    ELSE
       c<= TRANSPORT cdf;
    END IF;
  END PROCESS;
END ARCHITECTURE behav;
结构体的三种描述风格

描述形式:1.行为描述 2.数据流描述 3.结构描述

1).行为描述(Behavioral Descriptions)
     只描述电路功能或电路行为,而没有直接指明实现这些行为的硬件结构。行为描述在EDA工程中称为高层次描述或高级描述 。主要描述形式:用包含顺序语句的进程、函数、过程.	
用行为描述法设计八位比较器
	LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY comparator IS
PORT (a, b: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
          g: OUT STD_LOGIC);
END comparstor;
ARCHITECTURE behavioral OF comparator IS

BEGIN
  comp: PROCESS(a, b)
  BEGIN
    IF a=b THEN
       g<='1';
ELSE
       g<='0';
    END IF;
  END PROCESS comp;
END behavioral;
2)数据流描述(也称RTL描述 )

主要描述数据流动的路径、方向和结果

组成特点

1.建立在并行信号赋值语句基础上,条件信号赋值语句(WHEN-ELSE) 和选择信号赋值语句(WITH-SELECT-WHEN)是数据流法描述时常用的语句。
2. 可描述时序电路,也可描述组合电路

用数据流描述法设计8位比较器
LIBRARYY IEEE;
USE IEEE.STD_LOGIC_1164. ALL;
ENTITY compartor IS	
PORT (a, b: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
                g: OUT STD_LOGIC);
END compartor;
ARCHITECTURE dataflow OF compartor IS
BEGIN	
   g <= '1' WHEN (a=b) ELSE
            '0'; 
END daradlow;
用布尔方程形式作数据流描述设计的8位比较器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY comparator IS
PORT (a, b: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
                 g: OUT STD_LOGIC);
END comparator;
ARCHITECTURE bool OF comparator IS
BEGIN
  	    g<=             NOT (a (0) XOR b(0))
 AND NOT (a (1) XOR b(1))
 AND NOT (a (2) XOR b(2))
 AND NOT (a (3) XOR b(3))
 AND NOT (a (4) XOR b(4))
 AND NOT (a (5) XOR b(5))
 AND NOT (a (6) XOR b(6))
 AND NOT (a (7) XOR b(7));
END bool;
3)结构化描述(Structural Description)

主要描述电路的组成和元件之间的互连关系。通过定义端口界面来实现,风格接近于实际的硬件结构。
实现手段:采用元件例化语句和生成语句

结构化描述建模步骤:

(1)元件说明:描述局部接口。
(2)元件例化:相对于其它元件放置元件。
(3)元件配置:指定元件所用的实体,

8位比较器的结构化描述法
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE work.gatespkg.ALL; 
ENTITY comparator IS
PORT (a, b: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
          g: OUT STD_LOGIC);
END comparator;

--元件列话语句
ARCHITECTURE structural OF comparator IS
SIGNAL x: STD_LOGIC_VECTOR (0 TO 7);
BEGIN
u0: xnor2 PORT MAP(a(0) ,b(0) ,x(0));
u1: xnor2 PORT MAP(a(1) ,b(1) ,x(1));
u2: xnor2 PORT MAP(a(2) ,b(2) ,x(2));
u3: xnor2 PORT MAP(a(3) ,b(3) ,x(3));
u4: xnor2 PORT MAP(a(4) ,b(4) ,x(4));
u5: xnor2 PORT MAP(a(5) ,b(5) ,x(5));
u6: xnor2 PORT MAP(a(6) ,b(6) ,x(6));
u7: xnor2 PORT MAP(a(7) ,b(7) ,x(7));
u8: and8 PORT MAP(x(0) , x(1) , x(2) , x(3) ,
			x(4) , x(5) ,x(6) , x(7) , g);
END structural;

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
数字电子技术是研究电子器件及其应用的学科,主要用于处理信息和能量转换。在数字电路中,信息被表示为离散的电压序列。[1] 在数字电子技术的基础笔记中,有以下几个重要的概念和内容: 1. 信息和编码:香农是第一个对信息进行研究的人。补码和余三码是常用的编码方式,用于表示负数和进位信号。格雷码是一种特殊的编码形式,相邻码只有一位发生状态变化。[1] 2. 逻辑代数:逻辑代数是用于描述和分析逻辑运算的数学工具。真值表、与、或、非、异或等逻辑运算在逻辑代数中起着重要的作用。带入定理和反演定理是逻辑代数中常用的推理方法。最小项和最大项是逻辑函数的两种标准形式。卡诺图是用于简化逻辑函数的图形化方法。[1] 3. 门电路:门电路是由逻辑门组成的电路,用于实现逻辑功能。常见的逻辑门包括与门、或门、非门等。[1] 4. 可编程逻辑器件:EDA(Electronic Design Automation)是用于对可编程逻辑器件进行编程和链接的工具。可擦除PLD(Erasable Programmable Logic Device)和FPGA(Field Programmable Gate Array)是常见的可编程逻辑器件。HDL(硬件描述语言)如Verilog和VHDL用于描述硬件电路。SoC(System on Chip)是一种集成了完整系统和嵌入软件的芯片。[2] 5. 触发器:触发器用于存储和记忆1位二进制信号。常见的触发器包括RS触发器、JK触发器、T触发器和D触发器。触发器可以用于实现存储和时序控制功能。[2] 6. 格雷码:在数字系统中,为了避免代码按一定顺序变化时出现错误,可以使用格雷码进行编码。格雷码具有多种编码形式。[3] 以上是数字电子技术基础笔记中的一些重要内容和概念。这些内容涵盖了信息和编码、逻辑代数、门电路、可编程逻辑器件、触发器和格雷码等方面的知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

展桑~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值