文档介绍:第6章 VHDL程序设计<EDA技术与应用> 课程讲义
合肥工业大学彭良清
下一章
上一章
上一章内容回顾
先看一个VHDL代码的例子
简单代码结构:端口定义和电路逻辑表达
代码文件命名
进程(PROCESS)
VHDL代码中的:Port,Siganl,Variable
学会简单VHDL设计的三板斧
VHDL与C 代码中的函数的区别?
操作符& 数据类型& 赋值语句
逻辑分支语句:IF;CASE,
循环语句(LOOP)
VHDL代码中的时序逻辑和组合逻辑表达
语句的执行时间问题
(顺序语句& 并行语句)
基本单元电路的VHDL代码
(三态门,双向缓冲器,计数器,D触发器,译码器……)
本章内容
复杂代码设计要领
ponent )
代码复制(generate定义语句)
复杂电路的代码结构
(function、procedure、block、package)
库的使用
复杂代码设计要领
合理划分模块
使用层次化结构来编码
使用同步电路设计
对基本单元电路的VHDL代码应熟练掌握
使用 FSM (有限状态机)来设计电路
使用全局时钟& 全局复位信号(如果需要时钟的话)
ponent )
U1A & U2A的源代码
ENTITY demo1_01 IS
PORT ( A :IN STD_LOGIC;
B :OUT STD_LOGIC
);
END ENTITY demo1_01;
ARCHITECTURE bhv OF demo1_01 IS
BEGIN
B <= not A;
END ARCHITECTURE bhv;
ENTITY demo1_02 IS
PORT ( X : IN STD_LOGIC;
Y : IN STD_LOGIC;
Z : OUT STD_LOGIC
);
END ENTITY demo1_02;
ARCHITECTURE bhv OF demo1_02 IS
BEGIN
Z <= X AND Y;
END ARCHITECTURE bhv;
详细参见:
ponent_demo1_02
详细参见:
ponent_demo1_01
ENTITY demo1 IS
PORT ( IN1 : IN STD_LOGIC;
IN2 : IN STD_LOGIC;
OUT1 : OUT STD_LOGIC
);
END ENTITY demo1;
ARCHITECTURE bhv OF demo1 IS
COMPONENT demo1_01 IS -- ponent
PORT ( A : IN STD_LOGIC;
B : OUT STD_LOGIC
);
PONENT demo1_01;
COMPONENT demo1_02 IS -- two and ponent
PORT ( X : IN STD_LOGIC;
Y : IN STD_LOGIC;
Z : OUT STD_LOGIC
);
PONENT demo1_02;
SIGNAL sigIN3 : STD_LOGIC;
BEGIN
U1: demo1_01 PORT MAP( A => IN1, B => sigIN3 );
U2: demo1_02 PORT MAP( X => sigIN3, Y => IN2, Z =>OUT1 );
END ARCHITECTURE bhv;
U1A+U2A的源代码
详细参见:
ponent_demo1
ponent instance)
sigIN3
SIGNAL sigIN3 : STD_LOGIC;
U1: demo1_01 PORT MAP( A => IN1, B => sigIN3 );
U2: demo1_02 PORT MAP( X => sigIN3, Y => IN2, Z =>OUT1 );
这就是一个层次化设计的例子
元件例化:语法
元件定义语句
COMPONENT 元件名 IS
PROT ( 端口名表);
PONENT 元件名;
元件连接信号申明语句
SIGNAL 信号名:类型;
元件例化语句
例化名:元件名 PORT MAP( [端口名=>] 连接端口名……);
取一个元件
插在PCB的对应插座上
制作PCB的布线