VHDL程序设计及应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
comp: PROCESS(a, b) BEGIN IF a=b THEN y=‘1’; ELSE y=‘0’; ENDIF;
END PROCESS comp; END behavio;
ARCHITECTURE dataflow OF 源自文库omp4 IS BEGIN
y<=‘1’ WHEN(a=b) ELSE ‘0’; END dataflow; ARCHITECTURE structural OF comp4 IS COMPONENT xnor2
用行为描述法设计四位比较器
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY comp4 IS
PORT(a, b: IN STD_LOGIC_VECTOR(3 downto 0); y: OUT STD_LOGIC);
END comp4; ARCHITECTURE behavio OF comp4 IS BEGIN
实体和结构体是VHDL设计文件的两个基本组成部分。实体部分描述设计 系统的外部接口信号;结构体描述系统的内部电路。配置用于从库中选取所 需元件安装到设计单元的实体中;包集合存放各设计模块能共享的数据类型、 常数、子程序等;库用于存放已编译的实体、结构体、包集合和配置。
一个简单的例子
与门的逻辑描述
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY and2 IS
2。实体名说明该结构体隶属于哪个实体。
3。定义语句用于对该结构体内部使用的信号、常数、数据类型、函数进行定 义。特别注意,实体说明中定义的I/O信号为外部信号,而结构体定义的信 号为内部信号。
4。并行处理语句是结构体功能描述的主要语句。可以是赋值语句、元件调用 语句、进程语句、块语句、子程序等。注意这些语句是并行执行的,这是 由硬件本身的并行性决定的。
用结构化描述法设计四位比较器
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY comp4 IS
PORT(a, b: IN STD_LOGIC_VECTOR(3 downto 0); y: OUT STD_LOGIC);
END comp4; ARCHITECTURE structural OF comp4 IS COMPONENT xnor2
PORT(in1,in2: IN STD_LOGIC; out: OUT STD_LOGIC);
END COMPONENT; COMPONENT and4
PORT(in1,in2,in3,in4: IN STD_LOGIC; out: OUT STD_LOGIC);
END COMPONENT; SIGNAL s: STD_LOGIC(0 TO 3); BEGIN
功能描述语句 块语句(BLOCK) 进程语句(PROCESS)
信号赋值语句 子程序调用语句
元件例化语句
八选一数据选择器
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL ENTITY mux8 IS
PORT(IN0,IN1,IN2,IN3,IN4,IN5,IN6,IN7,A,B,C: IN STD_LOGIC; Y: OUT STD_LOGIC);
comp: PROCESS(a, b) BEGIN IF a=b THEN y=‘1’; ELSE y=‘0’; ENDIF;
END PROCESS comp; END behavio;
用数据流描述法设计四位比较器
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY comp4 IS
ENTITY、IS、END是VHDL的关键字。
端口说明的一般格式
PORT (端口名 {,端口名}:模式 数据类型名; 端口名 {,端口名}:模式 数据类型名);
端口说明是对设计实体与外部接口的描述,是设计实体和外部环境动态 通信的通道,其功能对应与电路图符号的一个引脚。
端口名:在实体中必须是唯一的,合法的标识符。 端口模式:IN(输入)、OUT(输出)、INOUT(双向)、BUFFER(输出
PORT(a, b: IN STD_LOGIC; y: OUT STD_LOGIC);
END and2; ARCHITECTURE and2x OF and2 IS BEGIN
y<=a AND b; END and2x;
库说明语句 程序包说明语句
实体部分 结构体部分
实体
实体的一般格式
ENTITY 实体名 IS [类属参数说明]; [端口说明];
PORT(in1,in2: IN STD_LOGIC; out: OUT STD_LOGIC);
END COMPONENT; COMPONENT and4
PORT(in1,in2,in3,in4: IN STD_LOGIC; out: OUT STD_LOGIC);
END COMPONENT;
SIGNAL s: STD_LOGIC(0 TO 3); BEGIN
END mux8; ARCHITECTURE behav OF mux8 IS
SIGNAL sel: INTEGER; BEGIN
Y<=IN0 AFTER 10ns WHEN sel=0 ELSE IN1 AFTER 10ns WHEN sel=1 ELSE IN2 AFTER 10ns WHEN sel=2 ELSE IN3 AFTER 10ns WHEN sel=3 ELSE
CONFIGURATION 配置名 OF 实体名 IS [说明语句];
END 配置名
其中说明语句的形式多样。对于不含BLOCK语句和COMPONENT语句的结构 体,可以使用以下形式: FOR 选配结构体名 END FOR;
对于包含COMPONENT语句的结构体。可以使用如下配置形式:
FOR 选配结构体名 {FOR 元件标号表:元件型号 USE ENTITY WORK.实体名 (结构体名); END FOR;}
结构体名
例:结构体的信号定义实例。
实体名
ARCHITECTURE rtl OF muj IS SIGNAL s1:BIT
结构体信号定义语句
SIGNAL s2,s3:STD_LOGIC_VECTOR (0 TO 3);

BEGIN ┇
功能描述语句
END rtl;
结构体构造图:
结构体 ( ARCHIT ECTURE) 说明语句
Ci:IN STD_LOGIC; Sum: OUT STD_LOGIC_VECTOR(3 downto 0); Co:OUT STD_LOGIC); END add4;
端口名
端口模式
数据类型
a[3..0] b[3..0] Ci
add4
Sum[3..0] Co 四位全加器电路图
结构体
结构体的格式
ARCHITECTURE 结构体名 OF 实体名 IS [定义语句];
u0: xnor2 PORT MAP(a(0), b(0), s(0)); u1: xnor2 PORT MAP(a(1), b(1), s(1)); u2: xnor2 PORT MAP(a(2), b(2), s(2)); u3: xnor2 PORT MAP(a(3), b(3), s(3)); u4: and4 PORT MAP(s(0), s(1), s(2), s(3), y); END structural;
u0: xnor2 PORT MAP(a(0), b(0), s(0)); u1: xnor2 PORT MAP(a(1), b(1), s(1));
u2: xnor2 PORT MAP(a(2), b(2), s(2)); u3: xnor2 PORT MAP(a(3), b(3), s(3)); u4: and4 PORT MAP(s(0), s(1), s(2), s(3), y); END structural; CONFIGURATION comp4_con OF comp4 IS FOR behavio END FOR; END comp4_con;
BEGIN [并行处理语句];
END 结构体名;
结构体描述实体的结构或行为。一个实体可以有多个结构体,每个结构体 分别代表该实体功能的不同实现方案。
结构体可以采用行为描述、结构描述或数据流描述,是VHDL设计中最主要 的部分。
结构体的一些说明
1。结构体名原则上可以是任意合法的标识符。为了提高程序的可读性,通常 依据该结构体所采用的描述方式,用相应的单词如:behavior(行为)、 dataflow(数据流)、structure(结构)。
PORT(a, b: IN STD_LOGIC_VECTOR(3 downto 0); y: OUT STD_LOGIC);
END comp4; ARCHITECTURE dataflow OF comp4 IS BEGIN
y<=‘1’ WHEN(a=b) ELSE ‘0’; END dataflow;
1 WHEN A=‘0’ AND B=‘0’ AND C=‘1’ ELSE 2 WHEN A=‘0’ AND B=‘1’ AND C=‘0’ ELSE 3 WHEN A=‘0’ AND B=‘0’ AND C=‘1’ ELSE 4 WHEN A=‘1’ AND B=‘0’ AND C=‘0’ ELSE 5 WHEN A=‘1’ AND B=‘0’ AND C=‘1’ ELSE 6 WHEN A=‘1’ AND B=‘1’ AND C=‘0’ ELSE 7; END behav;
此程序采用结构化的描述方法利用四个2输入同或门和一个4输入与门实现一 个四位比较器。每一个同或门完成两个四位二进制数中某一对应位的比较运算。
若四位二进制数中各对应位的比较结果相同, 则与门的输出y=1;否则y=0。
配置
配置的语法形式
配置用于描述层与层之间的连接关系和实体与结构体之间的连接关系。它主 要用于指定与实体对应的结构体。基本语法形式为:
END 实体名;
实体在VHDL程序设计中描述一个元件或一个模块与设计系统其余部分之 间的连接关系,可以看成是一个电路符号。在MaxplusII中实体名必须与VHDL 的文件名相同。
类属参量GENERIC是一种端口界面常数,用来规定端口的大小、实体中 子元件的数目及实体的定时特性等。它的值可由设计实体的外部提供,因此可 以通过对它的重新设定而改变一个元件或实体的内部电路结构和规模。
END FOR;
例子: CONFIGURATION comp4_con OF comp4 IS
FOR u1: xnor2 USE ENTITY IEEE.xnor2 END FOR; FOR u2: and4 USE ENTITY IEEE.and4 END FOR; END comp4_con;
加入了配置的四位比较器完整设计文件
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY comp4 IS
PORT(a, b: IN STD_LOGIC_VECTOR(3 downto 0); y: OUT STD_LOGIC);
END comp4; ARCHITECTURE behavio OF comp4 IS BEGIN
并向内部反馈)。BUFFER(缓冲)是INOUT的子集,但不是由外 部驱动。 数据类型:数据类型原则上可以是任何标准的数据类型和用户自定义类型。常 用的有INTEGER、STD_LOGIC、STD_LOGIC_VECTOR等。
四位全加器实体说明程序
ENTITY add4 IS PORT(a,b:IN STD_LOGIC_VECTOR(3 downto 0);
VHDL程序设计及应用
浙江科技学院信息学院 杨翊
VHDL的主要优点
功能强大,描述力强 可移植性好
研制周期短,成本低 可以延长设计的生命周期
VHDL语言
VHDL语言的程序结构
VHDL程序设计采用自顶向下的模块设计方法。一个完整的VHDL程序包 括实体(Entity)、结构体(Architecture)、配置(Configuration)、包集 合(Package)和库(Library)五个部分。
IN4 AFTER 10ns WHEN sel=4 ELSE IN5 AFTER 10ns WHEN sel=5 ELSE IN6 AFTER 10ns WHEN sel=6 ELSE IN7 AFTER 10ns sel<=0 WHEN A=‘0’ AND B=‘0’ AND C=‘0’ ELSE
相关文档
最新文档