格雷码、二进制码转换
3 不允许连续2个下划线
4 关键字不能用于标识符 5 大小写是等效的 例如:h_adder,mux21,example为合法标识符; 2adder,_mux21,ful__adder,adder_,and 为错误的标识符。
南理工紫金学院
实体
VHDL硬件描述语言基础 EDA设计实验
entity and_gate IS port(a,b: IN BIT; 信号名 y: out BIT); end and_gate; Port中定义了信号名、端口模式、端口类型。
Library IEEE; use IEEE.std_logic_1164.all;
entity and_gate is port(a,b: IN std_logic; y: out std_logic); end and_gate; architecture rhl of and_gate is begin y<=a and b; end rhl;
端口模 式
端口类型
南理工紫金学院
VHDL 语言的基本结构
EDA设计实验
VHDL 数据类型 VHDL 数据类型分为逻辑数据类型和数值数据类型。
逻辑数据类型
bit(位)信号形式:(‘0’,‘1’); bit_vector(位数组)信号形式:“00111”等。 以上三种数据类型都在std库的standar程序包中定义。
南理工紫金学院
VHDL硬件描述语言基础 EDA设计实验
实体(Entity)
实体主要用来定义设计所需要的输入输出信号. 实体格式如下
entity 实体名 IS port(列出输入/输出信 号端口); end 实体名;
entity and_gate IS port(a,b: IN BIT; y: out BIT); end and_gate;
南理工紫金学院
EDA设计实验
作业:
1、写出格雷码二进制码转换原理。 2、整理课堂所作内容,要求给出代码(关键地方给出注释)。 1)建立VHDL文件,用Case语句描述4位格雷码、二进制码转换, (P39); 2)新建另一个VHDL文件、用FOR语句描述n位(n=4)格雷码 二进制码转换电路,要求输出用7段数码管显示(提示:在该 代码中最后应用case语句将4位二进制转换位7段代码。) 3、给出仿真波形。 4、给出管脚配置图。 5、如果有硬件测试、给出硬件测试结果。 6、写出碰到的问题及解决方法、1000”显示8
译码器
D C B A
南理工紫金学院
EDA设计实验
七段数码管
a f g b
e
d
c
g为高位,a为地位 例如:如果数码管要显 示0,则赋值应该为 “0111111”
g f e d c b a
南理工紫金学院
EDA设计实验
利用模式6验证电路的正确性
8 7 6 5 4 3 2 1 扬声器
HEX 键8 键7 键6 键5 键4 键3 键2
HEX 键1
实验电路结构图 NO.6
南理工紫金学院
EDA设计实验
WHEN ELSE 条件信号赋值语句 目标信号<=表达式1 when 条件1 else 表达式2 when 条件2 else ...... 表达式n-1 when 条件n-1 else 表达式n;
1 声明部分包括:结构体所用的内部信号及数据类型; 元件例化声明。
2 结构体部分主要包括:并行语句信号赋值; 进程(顺序语句); 元件例化语句。 3 最后以end结束结构体部分。 南理工紫金学院
EDA设计实验
逻辑运算符
And(与),Or(或),Not(非), Nand(与非),Nor(或非),Xor(异或), Xnor(同或)。
条件句中的“=>”不是操作符,只相当于“THEN”作用。
南理工紫金学院
EDA设计实验
由于case属于顺序语句, 在VHDL中顺序语句只能存 在与进程中。
南理工紫金学院
VHDL 常用基本语句
EDA设计实验
进程语句
进程主要用于描述顺序语句,其格式如下:
标记:process (敏感信号表 ) --变量声明语句; begin --顺序语句 end process; 敏感信号(包括端口信号)指那些值发生改变后能引起 进程语句执行的信号。当敏感信号发生改变时,进程启 动,begin和end之间的语句从上到下顺序执行一次,然 后返回进程语句开始,等待下一次敏感信号的变化。因 此进程语句有两种状态:等待状态和执行状态。 南理工紫金学院
能进行逻辑运算的数据类型:bit、bit_vector、 boolean std_logic、std_logic_vector
南理工紫金学院
EDA设计实验
GENERATE语句 标号:for 循环变量 in 离散范围 generate 并行处理语句; end generate 标号;
南理工紫金学院
EDA设计实验
南理工紫金学院
EDA设计实验
第二节 格雷码、二进制码转换
南理工紫金学院
EDA设计实验
实验内容
1)学习VHDL代码修改。 2)利用case语句描述4位格雷码/二进制码 转换电路,要求将输入输出的数据用数码 管显示。 。 3)利用generate并行语句描述n位格雷码/ 二进制码转换电路(n=4)。 4) 利用实验箱验证所设计电路的正确性, 要求将输入输出的数据用七段数码管显示。
南理工紫金学院
VHDL 语言的基本结构
EDA设计实验
结构体(Architecture)
结构体描述实体的行为功能,其格式如下
architecture 结构体名 of 实体名 is --声明 begin --结构体部分 end 结构体名; architecture rhl of and_gate is begin y<=a AND b; end rhl; 逻辑运算符
南理工紫金学院
EDA设计实验
原理
4位格雷码转换为二进制表达式为:
B3 G 3 B 2 B3 G 2 B1 B 2 G1 B 0 B1 G 0
n位格雷码转换为二进制表达式
南理工紫金学院
VHDL硬件描述语言基础 EDA设计实验
VHDL 语言的基本结构
以二输入端与门为例,该文件名为:and_gate.vhd 库
说明:1 文件名和实体名要一致.每个语句以;结尾。 南理工紫金学院
实体
EDA设计实验
VHDL 的标识符(Identifiers)
实体名为VHDL标识符的一种。标识符是用户给常量、变量、 信号、端口、子程序或参数定义的名字
标识符命名规则 1 基本标识符由字母、数字和下划线组成 2 第一个字符必须是字母,最后一个字符不能是下划线
SPEAKER
PIO2 2-PIO16 接 g,f,e,d,c,b,a PIO3 0-PIO24 接 g, f, e , d, c, b, a 七段 PIO3 8-PIO32 接 g, f, e , d, c, b, a PIO4 6-PIO40 接 g, f, e , d, c, b, a D8 D7 D6 D5 D4 ( 直接与7 段显示器相接 ) D3 D2 D1
PIO22-PIO16 PIO30-PIO24 PIO38-PIO32
PIO13 D16
PIO12 D15
PIO11 D14
PIO10 D13
D12 PIO9
D11 PIO8
PIO46-PIO40 FPGA/CPLD PIO16 目标芯片 PIO17 PIO18 CLOCK0 PIO19 CLOCK2 PIO20 CLOCK5 PIO21 CLOCK9 PIO22 PIO23 PIO13-PIO8 PIO7-PIO4 PIO3-PIO0
case-when语句
case-when语句根据条件表达式的值执行一组顺序语 句,其格式如下
case 条件表达式 is when 条件表达式的值=>一组顺序语句; … … … when 条件表达式的值=>一组顺序语句; end case;
说明:case-when语句中条件表达式的值必须列举穷尽, 而且不能重复。 不能穷尽的表达式用others表示when others=>一组顺序语句; case-when语句是无序的,所有条件表达式的值并行处理。
程序包
实体
结构体
注意:VHDL 对大小写不敏感,‘’和“”中的内容除外。 南理工紫金学院
库和程序包
EDA设计实验
库
库是VHDL语言编写的源程序及其通过编译的数据 的集合,由各种程序包组成,常见的为STD库,IEEE库。
使用库必须用该语句:library ieee;
程序包
程序包提供了各种数据类型、函数定义以及各种类 型转换函数及运算等,常见的程序包有以下几种。 常用程序包为std_logic_1164程序包, std_logic_signed和std_logic_unsigned程序包, std_logic_arith程序包。
std_logic(标准逻辑位)信号形式:‘0’、‘1’、‘X’(不定)、‘Z’(高 阻),‘L’(弱信号0),‘H’(弱信号1),‘W’(弱信号不定),‘-’ (不可能情况)。 std_logic_vector(标准逻辑位矢量)
以上两种数据类型都在ieee库的std_logic_1164程序包中定义。 使用这两种数据类型 必须有两条声明语句: library ieee; use ieee.std_logic_1164.all;