2.VHDL的基本结构和语法(一)

2023-11-18


目录

1.VHDL基本结构

1.1.实体(Entity)

类属说明

端口方向:IN, OUT ,INOUT ,BUFFER

1.2.结构体 (Architecture)

1.3.库、程序包的调用

1.4.VHDL语句

1.4.1.并行语句

并行信号赋值

1.4.2.进程语句

进程的工作原理:

进程与时钟

进程的启动

进程的注意事项

1.5.元件例化语句

实现元件例化的详细步骤


1.VHDL基本结构

  •  实体(Entity) :描述所设计的系统的外部接口信号 ,定义电路设计中所有的输入和输出端口;
  •  结构体 (Architecture) :描述系统内部的结构和行为;
  • 包集合 (Package): 存放各设模块能共享的数据类型 、常数和子程序等 ;
  • 配置 (Configuration):  指定实体所对应的结构体;
  • 库 (Library):  存放已经编译的实体 、结构体 、包集合和配置。

VHDL的基本设计的基本设计单元结构:程序包说明 、实体说明和结构体说明三部分:

 


 1.1.实体(Entity)

实体描述了设计单元的输入输出接口信号或引脚 ,是设计实体经封装后对外的一个通信界面。

定义方式:

ENTITY    实体名   IS
[ GENERIC( 常数名 :数据类型 :设定值) ]
PORT
(  端口名1:  端口方向  端口类型;
   端口名2:  端口方向  端口类型;
  .
  .

  端口名n:  端口方向  端口类 型
); 
END [实体名]; 

注意:实体名由设计者自由命名 ,用来表示被设计电路芯片的名称 , 但是必须与VHDL程序的程序的文件名称相同。 要与文 件 名一 致 。


  •   类属说明

类属为设计实体与外界通信的静态信息提供通道 ,用来规定端口的大小、实体中子元件的数目和实体的定时特性等。

格 式 :
GENERIC(  常数名 :数据类型 :设定值;
                     ∶
                     常数名  :数据类型 :设定值 );

例 如:

GENERIC (wide :integer:=32); -- 说明宽度为32
GENERIC (tmp :integer:=1ns); -- 说明延时1 ns


  • 端口方向:IN, OUT ,INOUT ,BUFFER

OUT” 和“BUFFER”都可定义输出端口;

注意:若实体内部需要反馈输出信号 ,则输出端口必须被设置为为“BUFFER”,  而不能为能为“OUT”。

  •   同方向 、同类型的端口可放在同一个说明语句中。


1.2.结构体 (Architecture)

结构 体定义了设计单元具体的功能,描述了该基本设计单元的行为、 元件和内部的连接关系 .

定义方式:

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

提示:

1.声明语句的作用:用于声明该结构体将用到的信号 、数据类型 、常数、子程序和元件等 。 声明的内容是局部的。

2.功能描述语句:具体描述结构体的功能和行为。

  • 一 个实体可对应多个结构体 , 每个结构体代表该实体功能的不同实现方案或不同实现方式 。同一时刻只有一个结构体起作用,通过CONFIGURATION决定用哪个结构体进行仿真或综合。
  • 在结构体描述中, 具体给出了输入 、 输出信号之间的逻辑关系 。


1.3.库、程序包的调用

方法:

LIBRARY 库名;
USE 库名. 程序包名.项目名;

例子:

LIBRARY IEEE;
USE IEEE.Std_Logic_1164.ALL;--调用此程序包的所有资源

其他例子:

LIBRARY IEEE;
USE IEEE.Std_Logic_1164.ALL ;
USE IEEE.Std_Logic_Arith.ALL ;
USE IEEE.Std_Logic_Unsigned.ALL 


1.4.VHDL语句

1.4.1.并行语句

在结构体中的执行是同时进行, 执行顺序与书写顺序无关。如下图所示

  •  并行信号赋值

  • 简单赋值语句

目标信号名 <=  表达式

注意:目标信号的数据类型与右边表达式一 致。

  • 选择信号赋值语句

WITH  选择表达式 SELECT
赋值目标信号  <=  表达式1 WHEN 选择值 1, 
                              表达式2 WHEN 选择值 1, 
                              表达式n WHEN OTHERS;

注意:

1.选择值要覆盖所有可能情况 , 若不能一一指定,用OTHERS为其他情况找个出口。

2.选择值必须互斥 ,不能出现条件重复或重叠的情况。

例子:

实现一个4X1多路选择器,当选择信号为00则输出信号为Data0的数据,选择为01输出Data1的信号,依次类推:

程序如下:

library ieee;
use ieee.std_logic_1164.all;
entity mux is
port
(Data0,Data1,Data2,Data3:IN std_logic_Vector(7 downto 0);
 Sel : IN std_logic_vector(1 downto 0);
 Dout: out std_logic_vector(7 downto 0)
);
end;
architecture DataFolw of mux is
begin
	with Sel select
		Dout<= Data0 WHEN "00",
			   Data1 WHEN "01",
			   Data2 WHEN "10",
			   Data3 WHEN "11",
	"00000000" WHEN OTHERS;
end;

进行仿真测试:


  •  条件信号赋值语句

赋值目标信号  <=  表达式1 WHEN 赋值条件1 ELSE
                              表达式2 WHEN 赋值条件2 ELSE
                              表达式n WHEN 赋值条件n ELSE
                              表达式;

注意:

1.各赋值语句有优先级的差别 , 按书写顺序从高到低排列;

2.各赋值条件可以重叠。

例子:

实现8输入优先编码器:

程序如下:

library ieee;
use ieee.std_logic_1164.all;
entity Priority_Encoder is
port
(I : in std_logic_vector(7 downto 0);
 A : out std_logic_vector(2 downto 0)
);
end;
architecture DataFlow of priority_Encoder is
begin
	A<="111" WHEN I(7)='1' ElSE
	   "110" WHEN I(6)='1' ElSE
	   "101" WHEN I(5)='1' ElSE
	   "100" WHEN I(4)='1' ElSE
	   "011" WHEN I(3)='1' ElSE
	   "010" WHEN I(2)='1' ElSE
	   "001" WHEN I(1)='1' ElSE
	   "000" WHEN I(0)='1' ElSE
	   "111";
end;

进行仿真测试: 

 


1.4.2.进程语句

进程语句定义顺序语句模块 ,用于将从外部获得的信号值 ,或内部的运算数据向其他的信号进行赋值

  •  进程本身是并行语句, 但内部是顺序语句 ;
  • 进程只有在特定的时刻 ( 敏感信号发生变化) 才会被激活。

语法:

[ 进程标号 :] ] PROCESS ( 敏感信号参数表 )
[声明区 ] ;
      BEGIN
            顺序语句
      END PROCESS [进程标号] ;

注意:

1.一 个进程可以有多个敏感信号 , 任一 敏感信号发生变化都会激活进程。

2.声明区的作用:在进程中起作用的局部变量。

 

  • 进程的工作原理:

注意事项:

1.进程挂起:则执行过程终止。

2.当某个敏感信号的值发生变化时,每个进程语句立即完成进程内顺序语句所定义的功能行为。

3.顺序语句所定义的功能行为的结果可以赋值给信号,并通过信号被其他简称读取或赋值。

  • 进程与时钟

在每个上升沿启动一次进程( 执行进程内所有的语句 ) 。

 

描述方法:

上升沿描述: Clock’ EVENT AND Clock=‘1’
下降沿描述: Clock’ EVENT AND Clock=‘0’
上升沿描述: rising_edge (Clock)
下降沿描述: falling_edge (Clock)

例子1:

把clock设为敏感信号,当clock上升沿时,输出时钟就进行取反一次。

程序如下:

library ieee;
use ieee.std_logic_1164.all;
entity FreDevider is
port
(Clock: in std_logic;
 Clkout:out std_logic
);
end;
architecture Behavior of FreDevider is
Signal Clk:std_logic;
begin
	process(Clock)
begin
		if rising_edge(Clock) THEN
			Clk<=NOT Clk;
		end if;
	end process;
Clkout<=Clk;
end;
	

仿真波形如下:


例子2:

本例子做一个自加器,没遇到一个clock的上升沿,num就自加1,加到3就自动清零,重新开始,循环进行,还有一个复位按钮,只要检测是reset的值为1,num的数值就清零,重新开始计数。

代码如下:

library ieee;
use ieee.std_logic_1164.all;
entity Counter is
port
(reset: in std_logic;  --异步时钟复位信号
 clock: in std_logic;  --时钟信号
 num  :buffer integer range 0 to 3); --设置一个整形变量,范围从0到3
end;
architecture Behavior of Counter is
begin
	process(reset,clock)             --将复位,和时钟作为进程的敏感信号
		begin
		 if reset='1' THEN
			num<=0;                  --当检测到reset=1时,num清零
		 elsif rising_edge(clock) THEN
			if num=3 THEN
				num<=0;              --如果num=3就,清零
			else 
				num<=num+1;          --否则自加1
			end if; 
		 end if;
	end process;
end;

仿真结果如下:


  • 进程的启动

  • 当process的敏感信号参数表中没有列出任何敏感信号时 ,进程通过wait 语句启动 

例子:

ARCHITECTURE Behavior OF state IS
BEGIN
           PROCESS -- 敏感信号列表为 空
           BEGIN
           wait until Clock; -- 等待clock激活进程
                 IF ( drive=‘1’) THEN
                     CASE output IS
                     WHEN s1 => output <= s2;
                     WHEN s2 => output <= s3;
                     WHEN s3 => output <= s4;
                     WHEN s4 => output <= s1;
                     END CASE; 
                END IF; 
            END PROCESS;
END;


  • 进程的注意事项

  1. 进程本身是并行语句, 但内部为顺序语句 ;
  2. 进程在敏感信号发生变化时被激活 ,在使用了敏感表的进程中不能含wait 语句 ;
  3. 在同一进程中对同一信号多次赋值 , 只有最后一次生 效 ;
  4. 在不同进程中,不可对同一信号进行赋值;
  5. 一个进程不可同时对时钟上 、下沿敏感 。
  6. 进程中的信号赋值是在进程挂起时生效的,而变量赋值是即时生 效。
  7. 相对于结构体而言, 信号具有全局性 ,是进程间进行并行联系的重要途径 。
  8. 进程为综合器支持 ,且其建模方式直接影响仿真和综合结果 ,综合后对应于进程的硬件结构对进程中所有可读入信号都是敏感的。

1.5.元件例化语句

  • 元件例化引入一种连接关系 , 将预先设计好的实体定义为元件 , 并将此元件与当前设计实体中的端口相连接 , 从而为当前设计实体引入一个新的低一级的设计层次 。

举例:把元件比喻成要插在电路系统板上的芯片,端口比喻成准备接受芯片的插座。

元件例化的方式:

元件定义语句: 

Component    元件名
port ( 端口名表); 
End component   元件名;

元件例化语句:
例化名 : 元件名 port map ( [元件端口名=>]连接端口名 , …);

注意:

1.port当中列出对外通信的各端口名。

2.端口的关联方式有两种,第一:名字关联法,port map的语句中位置可以随意,第二:位置关联法,端口名和关联连接符号可以省去,连接端口名的排列方式与所需例化的元件端口定义的端口名顺序相对应。

3.连接端口名:当前系统与准备接入的元件对应端口相连的通信端口。

例子:

设计一个四输入的与非门,如下图所示:

此时我们需要设计一个2输入的与非门,然后通过元件例化这个二输入的与非门,实现四输入与非门的功能。

 

  • 实现元件例化的详细步骤

1.在电脑本地新建两个文件夹,分别用于存放二输入与非门的文件,另一个是实现这个与非门例化实现功能的元件。

在我们电脑本地目录下:D:\QuartusII_Test,新建两个文件夹如下所示:

2.然后再QuartusII新建一个VHDL文件,实现二输入与非门的功能,具体代码如下:

library ieee;
use ieee.std_logic_1164.all;
entity nd2 is
port
(a,b :in std_logic;
 c   :out std_logic
);
end;
architecture nd2bhv of nd2 is
begin
	c<=a nand b;
end;

 3.然后保存到D:\QuartusII_Test\nd2中,工程也要命名为:nd2

4.编辑成功后,新建一个仿真波形图,如下功能仿真正确

5.新建一个工程,工程保存到D:\QuartusII_Test\ord41 ,然后命名为ord41

6.新建一个VHDL文件,使用二输入与非门的元件例化,代码编辑如下:

library ieee;
use ieee.std_logic_1164.all;
entity ord41 is
port
(a1,b1,c1,d1 :in std_logic;
 z1   :out std_logic);
end ord41;
architecture ord41bhv of ord41 is
	component nd2
	port(a,b:in std_logic;
	     c  :out std_logic);
	end component;
	signal x,y:std_logic;
	begin
	u1:nd2 port map(a1,b1,x);
	u2:nd2 port map(a=>c1,c=>y,b=>d1);
	u3:nd2 port map(x,y,c=>z1);
end ord41bhv;

附录:对上面例子的说明

7.保存,文件名为ord41

8.这一步很重要,如果没有这一步编译将会报错!!!

添加库刚刚nd2的库到这个工程。

点击assignment下拉菜单中的settings选项,并选中user libraries选项,则下图所示:

点击library name 后面的“” 按钮,找到nd2文件夹,点击Add, 如下图所示:

9.点击编译按钮,对ord41工程进行编译,如果设置好第8步,而且语法没有错的话不会报错。

10.编译成功后,然后新建仿真图进行仿真,仿真结果如下:


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2.VHDL的基本结构和语法(一) 的相关文章

  • 关于ArcMap中打开ArcToolbox导致闪退的解决办法

    最近好久不用ArcGis的小编要用到ArcMap去发送一个GP服务 发现按照套路打开ArcMap点击ArcToolbox时 发生了ArcMap的闪退现象 几经周折终于解决了问题 希望也遇到这类问题的同学能够参考解决 而不是无脑的去重装软件
  • C# 实现ESC退出窗口的几种方法

    实现ESC退出窗口的几种方法 引言 方法一 同步按钮法 方法二 监听按键法 方法三 隐藏按钮法 最后 引言 我们通常用通过点击取消按键或者右上角的 X 盒子退出的方法来实现关闭当前Form窗体 但要使用按键ESC退出关闭窗口就显得更加高级了
  • 解决SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]的方案!!!!!

    目录 前提 一 安装maven helper插件 1 安装 2 安装成功 3 使用 二 去掉冲突的依赖包 1 前面已找到目标依赖 去pom文件内操作 2 去除 3 最后就可以了 前提 今天单元测试遇到了jar包冲突 SLF4J Class
  • 自己学驱动17——ARM工作模式和ARM9寄存器

    1 ARM体系CPU的7种工作模式 1 用户模式 usr ARM处理器正常的程序执行状态 2 快速中断模式 fiq 用于高速数据传输或通道处理 3 中断模式 irq 用于通用的中断处理 4 管理模式 svc 操作系统使用的保护模式 5 数据
  • 【Python】PyCharm中调用另一个文件的函数或类

    欢迎来到Python专栏 PyCharm中调用另一个文件的函数或类 o o 嗨 我是小夏与酒 博客主页 小夏与酒的博客 该系列文章专栏 Python学习专栏 文章作者技术和水平有限 如果文中出现错误 希望大家能指正 欢迎大家关注 目录 Py
  • 数据结构:栈

    文章目录 栈 一 概述 二 添加数据 三 删除数据 栈 一 概述 栈 Stack 是一种特殊的线性表 它只允许在一端进行插入和删除操作 通常被称为 后进先出 Last In First Out LIFO 的数据结构 栈由一系列元素组成 每个
  • python常见的三种格式化输出

    Author Father Teng Name input name Age int input age Job input job info info of 0 Name 0 Age 1 Job 2 format Name Age Job
  • 【源码改造】Flink-jdbc-connector源码简析+改造支持谓词下推

    一 需求背景分析 flink sql在维表关联时 会有一个场景 当右表的数据量比较大且有些数据虽然符合join条件 但其实对于下游来说数据可能没用 这样就浪费了flink的计算资源 且拉低了数据处理能力 如果在join前就把维表的数据进一步
  • rac术语小结

    author skatetime 2010 03 01 rac术语小结 CSS 集群同步服务 Cluster Syncronization Service 功能 Manages the cluster configuration by co
  • 一文搞定SpringSecurity+vue前后端分离

    我好菜啊 学了好几天才明白一点点 前言 把v部落git下来学一学 比起halo来说v部落会更加简单好懂一点 我看他用了SpringSecurity来做登录验证 那第一步就是学学这个SpringSecurity 然后我就发现了 我真的是太菜了
  • Linux如何强制关闭任务进程(Linux版任务管理器)

    问题描述 有时我们在使用Linux软件时会碰到软件卡死或者软件BUG无法退出 如何像使用Windows任务管理器一样去关闭应用呢 其实不需要通过重启系统来解决此类问题 只需要按照如下步骤即可解决 解决方案 第一步 打开Terminal终端控
  • 搭建redis主从复制(读写分离)

    一 主从复制原理 在搭建redis读写分离架构时 master必须开启持久化 可参考博客 RDB和AOF持久化策略一起使用也行Redis的持久化机制 RDB和AOF 1 p f 的博客 CSDN博客 一旦master宕机 虽然slave可以
  • Windows server 2016 powershell基本命令和web服务部署

    一 powershell命令 进入powershell 使用win r调出运行 gt 在运行中输入powershell 查看服务命令 Get WindowsFeature 命令可以加参数 不加则是显示全部 安装命令 Install Wind
  • Datawhale go语言学习 10反射机制

    go 语言中Type是反射的数据类型 Value是具体的值 原文档中的反射机制三个原则表述为 Reflection goes from interface value to reflection object Reflection goes
  • 【异常】RuntimeError: Failed to process string with tex because latex could not be found

    1 异常描述 RuntimeError Failed to process string with tex because latex could not be found RuntimeError Failed to process st
  • GLSL-WebGL着色器语言语法详解

    GLSL语法 GLSL它是强类型语言 每一句都必须有分号 它的语法和 typescript 挺像 GLSL的注释语法和 JS 一样 变量名规则也和 JS 一样 不能使用关键字 保留字 不能以 gl webgl 或 webgl 开头 运算符基
  • < Linux >:Linux 环境基础开发工具使用 (3)

    目录 一 Linux 调试器 gdb 的使用 1 1 背景 1 2 开始使用 1 3 理解 二 Linux项目自动化构建工具 make与Makefile makefile 2 1 背景 2 2 项目结构 三 Linux 系统中第一个小程序
  • 生活当中调整时钟时间背后发生的事情

    生活当中调整时钟时间背后发生的事情 我们在生活当中想要设定时钟 手表的时间的事情 我们通过会和大多数人一样 会按照手机上的时间来设定 但是 这背后发生了什么事情 我想大部分人应该是不知道的 其实我们自己的时间是自动设定 每隔一阵子 我们的手
  • springboot集成pagehelper

    1 导入pom xml

随机推荐

  • postman调用参数是对象

    写了一个controller 需要用postman调通测试一下 请求参数是vo controller 端口号是1213 postman调用时传入对象的方式如下
  • STC15单片机-低功耗设计

    低功耗设计 STC15省电模式 数据手册有介绍 STC15系列单片机可以运行3种省电模式以降低功耗 它们分别是 低速模式 空闲模式和掉电模式 正常工作模式下 STC15系列单片机的典型功耗是2 7mA 7mA 而掉电模式下的典型功耗是 lt
  • SpringBoot实现微信支付,微信扫码支付,Native支付(全网最详细教程)

    1 添加微信支付依赖
  • ICCV、ECCV、CVPR三大国际会议

    目录 前言 一 ICCV ECCV CVPR是什么 1 ICCV 2 ECCV 3 CVPR 二 三大会链接及论文下载链接 前言 作为刚入门CV的新人 有必要记住计算机视觉方面的三大顶级会议 ICCV CVPR ECCV 统称为ICE 与其
  • 【论文翻译】文本语义提取

    摘要 文本文档是存储信息的手段之一 这些文档可以在个人桌面计算机 内部网和Web上找到 因此 有价值的知识以非结构化的形式嵌入 拥有一个可以从文本中提取信息的自动化系统是非常可取的 然而 开发这样一个自动化系统的主要挑战是自然语言并不是没有
  • geth生成钱包地址

    配置Geth 博主是Ubuntu18 04 所以 sudo apt update sudo add apt repository ppa longsleep golang backports sudo apt update sudo apt
  • 宏定义与逻辑运算学习笔记

    宏定义 宏定义又称为宏代换 宏替换 简称 宏 格式 define标识符 字符串 其中的标识符就是所谓的符号常量 也称为 宏名 掌握 宏 概念的关键是 换 即在对相关命令或语句的含义和功能作具体分析之前就要换 例 define PI 3 14
  • Tracy 小笔记 Vue - Vue 数据的响应式原理

    变量如果是对象的话 那么需要给对象先定义好属性 才能响应式 因此需要提前定义好所需的属性 如 info name 11 value 22 添加属性 如果想要再之后添加属性的话还想要响应式的话 有如下两种方式 使用 Vue set 这个可以是
  • errcode = 40163; errmsg = "code been used"(提供一种解决思路)

    最近在做微信开发 就在开发完毕测试的时候 遇到一个大问题 每次新用户进入的时候就报错 错误基本上就是code been used 我去百度了好久 没有找到合适的方案 后来我仔细的看了一下微信开发文档 终于解决了 注 该方法不一定对所有人有效
  • C语言中关键字const、static、volatile的用法分析

    1 const 作为一个程序员 我们看到关键字const时 首先想到的应该是 只读 因为 它要求其所修饰的对象为常量 不可对其修改和二次赋值操作 不能作为左值出现 看几个例子 const int a 同上面的代码行是等价的 都表示一个常整形
  • TCP 、UDP、IP包的最大长度是多少?

    对于UDP协议来说 整个包的最大长度为65535 其中包头长度是65535 20 65515 对于TCP协议来说 整个包的最大长度是由最大传输大小 MSS Maxitum Segment Size 决定 MSS就是TCP数据包每次能够传 输
  • 数据回归算法

    文章目录 效果一览 文章概述 源码设计 参考资料 效果一览 文章概述 数据回归算法 Matlab实现逐步回归预测模型 逐步回归 Stepwise Regression 其基本思想是将变量逐个引入模型 每引入一个预测变量 解释变量 后都要进行
  • 作为一个Java程序员,深入java虚拟机第四版

    第一阶段 架构师筑基必备技能 我觉得 但凡是个成年人应该都清楚扎实的基本功对自己的工作帮助有多重要 从各大招聘网站的招聘要求来看 第一条都明确说明需要扎实的Java基础 因此 一般笔试以及面试的第一轮 对基础的考察是比较多的 其实我发现有很
  • 如何写一个随机洗牌函数

    看到了很多人写得随机洗牌函数 但是感觉写得都不是太好 自己写了一个试试 基本要求 给定一定范围的数比如最大值最小值 min max 在这个之间进行随机洗牌 首先生成一个按min到最大的max的数组a 对数组进行循环 每次随机生成一个要取的下
  • c++ 中ref 和引用的区别

    c 中 本身可以使用 来实现引用 那为什么还会出现ref 呢 ref int f2 int c c cout lt lt in function c lt lt c lt
  • Java基础 (三):LinkedList(含使用方法详解)

    Java LinkedList 链表 Linked list 是一种常见的基础数据结构 是一种线性表 但是并不会按线性的顺序存储数据 而是在每一个节点里存到下一个节点的地址 链表可分为单向链表和双向链表 一个单向链表包含两个值 当前节点的值
  • 放大倍数超5万倍的Memcached DDoS反射攻击,怎么破?

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 作者 腾讯游戏云 背景 Memcached攻击创造DDoS攻击流量纪录 近日 利用Memcached服务器实施反射DDoS攻击的事件呈大幅上升趋势 DDoS攻击流量首次过T 引发业界
  • Java实现对数据库的查操作

    查询数据库得到的结果有很大的可能会得到若干条 因此executeQuery 方法的返回值是一个集合 返回类型由ResultSet接收 数据库的增删改操作 在JDBCUtils工具类中对close方法进行方法重载 public static
  • 【Spark NLP】第 7 章:分类和回归

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 2.VHDL的基本结构和语法(一)

    目录 1 VHDL基本结构 1 1 实体 Entity 类属说明 端口方向 IN OUT INOUT BUFFER 1 2 结构体 Architecture 1 3 库 程序包的调用 1 4 VHDL语句 1 4 1 并行语句 并行信号赋值