VHDL

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

……
结构体的实现方法(4种)
1、算法描述
行为描述表示输入与输出间的转换关系。
2、数据流描述
数据流描述反映了从输入数据到输出数据间发生的逻辑变换。
3、结构描述
结构描述所包含的模块或元件及互连关系以及与实体引线的对应关系。
4、混合描述
结构体的不同实现方法(半加器)
1、算法描述
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a,b : IN STD_LOGIC; c, s : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE alg1_ha OF h_adder IS BEGIN c1:PROCESS(a ,b) BEGIN IF a=‘1’ AND b=‘1’ THEN c<=‘1’; ELSE c<=‘0’; END IF; END PROCESS c1; c2:PROCESS(a ,b) BEGIN IF a=‘0’ AND b=‘0’ THEN s<=‘0’; ELSIF a=‘1’ AND b=‘1’ THEN s<=‘0’; ELSE s<=‘1’; END IF; END PROCESS c2; END alg1_ha ;
nq<= NOT d ; END IF; END PROCESS ;
END des1_dff ;
END PROCESS ;
END des2_dff ;
生成语句:
生成标号: 生成方案[IF、FOR] GENERATE
并行语句 ;
END GENERATE ;
断言语句:
ASSERT 条件 [REPORT 报告信息] [SEVERITY 出错级别] ;
VHDL基本结构
实体说明: ENTITY 实体名 IS
[ PORT(端口表);]
END [ ENTITY ] [ 实体名 ] ;
(用来定义实体与外部的连接关系以及需传给实体的参数)
结构体:
ARCHITECTURE 结构体名 OF 实体名 IS END [ ARCHITECTURE ] [ 结构体名 ] ;
BEGIN f <= d0 WHEN a1=„0‟AND a0=„0‟ ELSE; d1 WHEN a1=„0‟AND a0=„1‟ ELSE; d2 WHEN a1=„1‟AND a0=„0‟ ELSE; d3; END ;
2、选择信号赋值语句
WITH 表达式 SELECT 信号名<= 表达式1 WHEN 表达式2 WHEN 值1; 值2;
*1、试用算法描述下列逻辑关系所示器件 *1、试用算法形式描述下列真值表所示器件
A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 Y 0 0 0 1 0 1 1 0
*2、试用数Biblioteka Baidu流形式描述下列逻辑关系所示器件 *1、试用算法形式描述下列真值表所示器件
IF语句:
IF 布尔表达式1 THEN 顺序语句1; 顺序语句2;] [ ELSIF 布尔表达式2 THEN
[ ELSE
ENDIF;
布尔表达式3;]
IF mode= „0‟
THEN
d <= a OR b ; f <= c OR d ; ELSE d <= „0‟ ; f <= „1‟ ;
ENDIF;
VHDL常数表示
非十进制数的表示方法: 基数 # 基于该基数的数 # E指数
整数1000可表示如下:
1000 1E3 16#3E8# 16#1#E3 8#1750# 8#1#E3 2#11111010000# 2#1#E3
VHDL运算符
算术运算符:+ * / ** 关系运算符:= , /= , < , > , <= , >= 逻辑运算符:AND OR NOT NAND NOR XOR XNOR
(描述实体的逻辑功能或内部结构,从而建立设计实体输出与输入之间的关系)
VHDL设计库
LIBRARY <设计库名> ; USE < 设计库名>.<程序包名>.ALL ;
(库文件调用应放在实体说明之前)
LIBRARY IEEE ;
USE IEEE . std_logic_1164 . ALL;
VHDL数据类型
表达式N WHEN
ENTITY mux4 IS PORT(input : IN Bit_Vector(1 DOWNTO 0) ; output : OUT Bit_Vector(0 TO 3 ) ; END ENTITY mux4 ; ARCHITECTURE assign2 OF mux IS BEGIN WITH input SELECT output <= “0001” WHEN “0010” WHEN “0100” WHEN “1000” WHEN “00”; “01”; “10”; “11”;
值N;
END

进程语句: ( 敏感信号发生变化时,进程才会被激活)
[进程标号:] PROCESS [(敏感信号表)]
BEGIN [ WAIT ON (敏感信号表) ] 顺序语句;
[IS]
END
PROCESS [进程标号] ;
ENTITY d_ff IS PORT( d , clk : IN BIT ; q , nq : OUT BIT ) ; END d_ff ;
ARCHITECTURE mix_ha OF h_adder IS COMPONENT and_gate PORT ( a1,a2:IN Bit ;a3:OUT Bit); END COMPONENT;
BEGIN s<= a XOR b ; g1:and_gate PORT MAP (a, b, c) ; END mix_ha ;
其他运算符:+
-
&(拼接运算符)
“ half ” & “adder ” = “ halfadder ”
变量与信号赋值:
立即赋值 :=
延迟赋值 < =
VHDL基本语句
顺序语句
变量与信号赋值语句:
:= 立即赋值 将右边表达式的值立即赋给左边的对象。(常量,变量)
< = 延迟赋值 将右边表达式的值经过一定时间间隔之后赋给左边的对象。(信号)
CASE语句:
CASE 表达式 IS WHEN 表达式值1=>顺序语句1;
[ WHEN
[ WHEN
表达式值1=>顺序语句1;]
表达式值1=>顺序语句1;]
END CASE;
CASE cnt WHEN WHEN
IS 8 => cnt : = 0 ; OTHERS => cnt : = cnt + 1;
ARCHITECTURE des1_dff OF d_ff IS BEGIN PROCESS (clk) BEGIN ARCHITECTURE des2_dff OF d_ff IS BEGIN PROCESS BEGIN
IF clk= „1‟
q <= d ;
THEN
WAIT ON clk ;
IF clk= „1‟ q <= d ; nq<= NOT d ; END IF; THEN
A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 Y 0 0 0 1 0 1 1 0
a 0 0 1 1
b 0 1 0 1
c 0 0 0 1
s 0 1 1 0
h_adder
a
. C1 .
C2
c
s
b
LIBRARY
IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a,b : IN STD_LOGIC;
h_adder
a b
VHDL对象类别
SINGAL(信号)
SINGAL clock:Bit;
VARIABLE(变量)
VARIABLE i: Integer :=13;
CONSTANT(常量)
CONSTANT delay:=5ns;
FILE(文件) 对象说明: 对象类别
标识符:类型标识 [ := 初值 ] ;
VHDL常数表示
. C1
.
C2
c s
c, s : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE alg2_ha OF h_adder IS
BEGIN PROCESS(a ,b) BEGIN IF a=‘0’ AND b=‘0’ ELSIF a=‘1’ AND b=‘1’
END CASE;
LOOP语句:
[LOOP标号:] [重复模式] LOOP 顺序语句; END LOOP [LOOP标号:];
VARIABLE cnt: Integer :=1; SINGAL start :Bit:=0 , a : Bit_Vector( 7 DOWNTO 0) ;
SINGAL done ;
=1
ARCHITECTURE struct_ha OF h_adder IS COMPONENT and_gate PORT ( a1,a2:IN Bit ;a3:OUT Bit); END COMPONENT; COMPONENT xor_gate PORT ( x1,x2:IN Bit ;x3:OUT Bit); END COMPONENT;
THEN THEN
c<=‘0’; s<=‘0’; c<=‘1’; s<=‘0’ ;
ELSE
c<=‘0’; s<=‘1’ ;
ENDIF; END PROCESS ; END alg2_ha ;
2、数据流描述 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a,b : IN STD_LOGIC; c, s : OUT STD_LOGIC); END ENTITY h_adder;
ARCHITECTURE dataflow_ha BEGIN
s<= a XOR b;
OF h_adder IS
c<= a AND b;
END dataflow_ha ;
{ c = ab
s =a b
3、结构描述
LIBRARY IEEE;
h_adder
a b
. .
c
&
s
USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a,b : IN STD_LOGIC; c, s : OUT STD_LOGIC); END ENTITY h_adder;
• • • • • 整数 浮点数 字符 字符串 位串
小数 ,如3.125 用单引号括起来,如'0','1'
用双引号括起来,如 “a b c d ”
字符形式的多位数码具有有基数说明 二进制(B),八进制(O),十六进制(X),
B “101010101” O “525” X “155”
• 物理数
带有单位的数 ,如 1000 ohm
BEGIN g1:and_gate PORT MAP (a, b, c); g2:xor_gate PORT MAP (a, b, s);
END struct_ha ;
4、混合描述
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a,b : IN STD_LOGIC; c, s : OUT STD_LOGIC); END ENTITY h_adder;
整型(Integer)
实型(Real)
枚举型(Bit,Boolean)
物理型(Time)
自定义数据类型
BIT数据类型定义: TYPE BIT IS('0','1'); STD_LOGIC数据类型定义: TYPE STD_LOGIC IS ('U','X','0','1','Z' ,'W','L','H','-') ;
…... loop1: WHILE start /= „1‟ LOOP
done <= „1‟ ;
END LOOP loop1; loop2: FOR cnt IN 1 TO 3 LOOP a <= a XOR cnt ; END LOOP loop2;
并行语句
ARCHITECTURE rsff OF rs_ff IS
BEGIN q <= s NAND nq ; nq <= r NAND q ; END ;
并行信号赋值语句:
1、条件信号赋值语句 信号名 <= 表达式1 WHEN (条件1)ELSE; 表达式2 WHEN (条件2)ELSE; 表达式N-1 WHEN (条件N-1)ELSE; 表达式N;
ARCHITECTURE assign OF mux41 IS
相关文档
最新文档