第 4章
VHDL设计初步
EDA技术 实用教程
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.1 2选 1多路选择器的 VHDL描述
【 例 4-1】 ENTITY mux21a IS
PORT ( a,b,IN BIT;
s,IN BIT;
y,OUT BIT );
END ENTITY mux21a;
ARCHITECTURE one OF mux21a IS
BEGIN
y <= a WHEN s = '0' ELSE
b ;
END ARCHITECTURE one ;
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.1 2选 1多路选择器的 VHDL描述
(1) 以关键词 ENTITY引导,END ENTITY mux21a结尾的语句部分,称为实体。
图 4-1 mux21a实体
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.1 2选 1多路选择器的 VHDL描述
(2) 以关键词 ARCHITECTURE引导,END
ARCHITECTURE one结尾的语句部分,称为结构体。
图 4-2 mux21a结构体
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.1 2选 1多路选择器的 VHDL描述
【 例 4-2】
ENTITY mux21a IS
PORT ( a,b,IN BIT;
s,IN BIT;
y,OUT BIT );
END ENTITY mux21a;
ARCHITECTURE one OF mux21a IS
SIGNAL d,e,BIT;
BEGIN
d <= a AND (NOT S) ;
e <= b AND s ;
y <= d OR e ;
END ARCHITECTURE one ;
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.1 2选 1多路选择器的 VHDL描述
【 例 4-3】
.,,
ARCHITECTURE one OF mux21a IS
BEGIN
y <= (a AND (NOT s)) OR (b AND s) ;
END ARCHITECTURE one;
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.1 2选 1多路选择器的 VHDL描述
【 例 4-4】
ENTITY mux21a IS
PORT ( a,b,s,IN BIT;
y,OUT BIT );
END ENTITY mux21a;
ARCHITECTURE one OF mux21a IS
BEGIN
PROCESS (a,b,s)
BEGIN
IF s = '0' THEN
y <= a ; ELSE
y <= b ;
END IF;
END PROCESS;
END ARCHITECTURE one ;
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.1 2选 1多路选择器的 VHDL描述
1,0μ s 1,5μ s 2,0μ s 2,5μ s 3,0μ s
图 4-3 mux21a功能时序波形
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.2 VHDL相关语法说明
1,实体表达
【 例 4-5】
ENTITY e_name IS
PORT ( p_name,port_m data_type;
...
p_namei,port_mi data_type );
END ENTITY e_name;
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.2 VHDL相关语法说明
2,实体名
3,PORT语句和端口信号名
4,端口模式
,IN”,“OUT”,“INOUT”,,BUFFER”
5,数据类型 BIT
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.2 VHDL相关语法说明
6,结构体表达
【 例 4-6】
ARCHITECTURE arch_name OF e_name IS
(说明语句 )
BEGIN
(功能描述语句 )
END ARCHITECTURE arch_name ;
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.2 VHDL相关语法说明
7,信号传输 (赋值 )符号和数据比较符号
8,逻辑操作符 AND,OR,NOT
9,IF_THEN条件语句
IF语句必须以语句,END IF;,结束
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.2 VHDL相关语法说明
10,WHEN_ELSE条件信号赋值语句赋值目标 <= 表达式 WHEN 赋值条件 ELSE
表达式 WHEN 赋值条件 ELSE
...
表达式 ;
11,PROCESS进程语句和顺序语句
12,文件取名和存盘
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.3 VHDL设计的基本概念和语句小节实体:
以 ENTITY.,,END ENTITY e_name描述器件的端口特性。
结构体:
以 ARCHITECTURE,.,END ARCHITECTURE 给出器件的逻辑功能和行为。
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.3 VHDL设计的基本概念和语句小节端口定义:
以 PORT()语句定义器件端口及其数据类型。
端口模式:
IN,OUT,INOUT,BUFFER描述端口数据的流向特征。
数据类型:
数据对象承载数据的类别,BIT的定义值为逻辑 '1'和
'0'。
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.3 VHDL设计的基本概念和语句小节信号赋值符:
,<=”,用于信号数据的传输,仿真传输延时最短为一个
。 条件比较符:
,=”,在条件语句表式中用于比较待测数据的关系。
延时:
模拟器最小分辨时间?,或称延时? 。
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.3 VHDL设计的基本概念和语句小节逻辑操作符:
在 AND(与 ),OR(或 )和 NOT(取反 )等的作用下可构成组合电路。
IF条件语句:
IF_THEN_ELSE语句作为顺序语句,可用于描述组合电路。
并行条件语句:
WHEN_ELSE条件信号赋值语句。
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.3 VHDL设计的基本概念和语句小节进程语句:
以 PROCESS,..END PROCESS引导的语句结构。
顺序语句:
由进程语句引导的,以顺序方式执行的语句。
并行语句:
在结构体中以并行方式执行的语句。
KX
康芯科技
4.1 多路选择器 VHDL描述
4.1.3 VHDL设计的基本概念和语句小节文件取名:
建议文件名与 VHDL设计的实体名一致,后缀是,vhd。
文件存盘:
VHDL设计文件必须存于指定为工程的目录中,此目录将被设定为 WORK库,WORK库的路径即为此目录的路径。
KX
康芯科技
4.2 寄存器描述及其 VHDL语言现象
4.2.1 D触发器的 VHDL描述
【例 4-7】
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY DFF1 IS
PORT (CLK,IN STD_LOGIC ;
D,IN STD_LOGIC ;
Q,OUT
STD_LOGIC );
END ;
图 4-4 D触发器
KX
康芯科技
4.2 寄存器描述及其 VHDL语言现象
4.2.1 D触发器的 VHDL描述
【例 4-7】
ARCHITECTURE bhv OF DFF1 IS
SIGNAL Q1,STD_LOGIC ; --类似于在芯片内部定义一个数据的暂存节点
BEGIN
PROCESS (CLK)
BEGIN
IF CLK'EVENT AND CLK = '1'
THEN Q1 <= D ;
END IF;
Q <= Q1 ; --将内部的暂存数据向端口输出
END PROCESS ;
END bhv;
KX
康芯科技
4.2 寄存器描述及其 VHDL语言现象
4.2.2 D触发器 VHDL描述的语言现象说明
1,标准逻辑位数据类型 STD_LOGIC
BIT数据类型定义:
TYPE BIT IS('0','1');
STD_LOGIC数据类型定义:
TYPE STD_LOGIC IS
('U','X','0','1','Z','W','L','H','-');
KX
康芯科技
4.2 寄存器描述及其 VHDL语言现象
4.2.2 D触发器 VHDL描述的语言现象说明
2,设计库和标准程序包使用库和程序包的一般定义表式是:
LIBRARY <设计库名 >;
USE < 设计库名 >.<程序包名 >.ALL ;
KX
康芯科技
4.2.2 D触发器 VHDL描述的语言现象说明
3,SIGNAL信号定义和数据对象
【例 4-8】
ARCHITECTURE bhv OF DFF1 IS
BEGIN
PROCESS (CLK)
BEGIN
IF CLK'EVENT AND CLK = '1'
THEN Q <= D ;
END IF;
END PROCESS ;
END ;
KX
康芯科技
4.2 寄存器描述及其 VHDL语言现象
4.2.2 D触发器 VHDL描述的语言现象说明
4,上升沿检测表式和信号属性函数 EVENT
5,不完整条件语句与时序电路关键词 EVENT是信号属性,VHDL通过以下表式来测定某信号的跳变边沿:
<信号名 >'EVENT
KX
康芯科技
【例 4-9】
ENTITY COMP_BAD IS
PORT( a1,IN BIT;
b1,IN BIT;
q1,OUT BIT );
END ;
ARCHITECTURE one OF COMP_BAD IS
BEGIN
PROCESS (a1,b1)
BEGIN
IF a1 > b1 THEN q1 <= '1' ;
ELSIF a1 < b1 THEN q1 <= '0' ;-- 未提及当 a1=b1时,q1作何操作
END IF;
END PROCESS ;
END ;
5,不完整条件语句与时序电路图 4-5 例 4-9的电路图
KX
康芯科技
5,不完整条件语句与时序电路
【例 4-10】
ENTITY COMP_GOOD IS
PORT(a1,IN BIT;
b1,IN BIT;
q1,OUT BIT );
END ;
ARCHITECTURE one OF COMP_GOOD IS
BEGIN
PROCESS (a1,b1)
BEGIN
IF a1 > b1 THEN q1 <= '1' ;
ELSE q1 <= '0' ;
END IF;
END PROCESS ;
END ;
图 4-6 例 4-10的电路图
KX
康芯科技
4.2 寄存器描述及其 VHDL语言现象
4.2.3 实现时序电路的 VHDL不同表达方式
【 例 4-11】
...
PROCESS (CLK)
BEGIN
IF CLK'EVENT AND (CLK='1') AND (CLK'LAST_VALUE='0')
THEN Q <= D ; --确保 CLK的变化是一次上升沿的跳变
END IF;
END PROCESS ;
KX
康芯科技
4.2 寄存器描述及其 VHDL语言现象
4.2.3 实现时序电路的 VHDL不同表达方式
【 例 4-12】
...
PROCESS (CLK)
BEGIN
IF CLK='1' AND CLK'LAST_VALUE='0' --同例 4-11
THEN Q <= D ;
END IF;
END PROCESS ;
KX
康芯科技【 例 4-13】
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY DFF3 IS
PORT (CLK,IN STD_LOGIC ;
D,IN STD_LOGIC ;
Q,OUT STD_LOGIC );
END ;
ARCHITECTURE bhv OF DFF3 IS
SIGNAL Q1,STD_LOGIC;
BEGIN
PROCESS (CLK)
BEGIN
IF rising_edge(CLK) -- 必须打开 STD_LOGIC_1164程序包
THEN Q1 <= D ;
END IF;
Q <= Q1 ;
END PROCESS ;
END ;
KX
康芯科技
4.2 寄存器描述及其 VHDL语言现象
4.2.3 实现时序电路的 VHDL不同表达方式
【 例 4-14】
...
PROCESS
BEGIN
wait until CLK = '1' ; --利用 wait语句
Q <= D ;
END PROCESS;
KX
康芯科技
4.2 寄存器描述及其 VHDL语言现象
4.2.3 实现时序电路的 VHDL不同表达方式
【 例 4-15】
...
PROCESS (CLK)
BEGIN
IF CLK = '1'
THEN Q <= D ; --利用进程的启动特性产生对 CLK的边沿检测
END IF;
END PROCESS ;
KX
康芯科技
4.2 寄存器描述及其 VHDL语言现象
4.2.3 实现时序电路的 VHDL不同表达方式
【 例 4-16】
...
PROCESS (CLK,D) BEGIN
IF CLK = '1' --电平触发型寄存器
THEN Q <= D ;
END IF;
END PROCESS ;
KX
康芯科技
4.2.3 实现时序电路的 VHDL不同表达方式图 4-7 边沿型触发器时序波形图 4-8 电平触发型寄存器的时序波形
KX
康芯科技
4.2 寄存器描述及其 VHDL语言现象
4.2.4 异步时序电路设计图 4-9 例 4-17综合后的电路
KX
康芯科技【 例 4-17】
...
ARCHITECTURE bhv OF MULTI_DFF IS
SIGNAL Q1,Q2,STD_LOGIC;
BEGIN
PRO1,PROCESS (CLK)
BEGIN
IF CLK'EVENT AND CLK='1'
THEN Q1 <= NOT (Q2 OR A);
END IF;
END PROCESS ;
PRO2,PROCESS (Q1)
BEGIN
IF Q1'EVENT AND Q1='1'
THEN Q2 <= D;
END IF;
QQ <= Q2 ;
END PROCESS ;
KX
康芯科技
4.3 1位二进制全加器的 VHDL设计图 4-10 半加器 h_adder电路图图 4-11 全加器 f_adder电路图
KX
康芯科技
4.3 1位二进制全加器的 VHDL设计
4.3.1 半加器描述和 CASE语句表 4-1 半加器 h_adder逻辑功能真值表
a b so co
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
KX
康芯科技
4.3 1位二进制全加器的 VHDL设计
4.3.1 半加器描述和 CASE语句
1,CASE语句
CASE <表达式 > IS
When <选择值或标识符 > => <顺序语句 >;,.,; <顺序语句 > ;
When <选择值或标识符 > => <顺序语句 >;,.,; <顺序语句 > ;
...
END CASE ;
KX
康芯科技
4.3 1位二进制全加器的 VHDL设计
4.3.1 半加器描述和 CASE语句
2,标准逻辑矢量数据类型 STD_LOGIC_VECTOR
在使用 STD_LOGIC_VECTOR中,必须注明其数组宽度,即位宽,如:
B,OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ;
或 SIGNAL A,STD_LOGIC_VECTOR(1 TO 4)
B <= "01100010" ; -- B(7)为 '0'
B(4 DOWNTO 1) <= "1101" ; -- B(4)为 '1'
B(7 DOWNTO 4) <= A ; -- B(6)等于 A(2)
KX
康芯科技
4.3 1位二进制全加器的 VHDL设计
4.3.1 半加器描述和 CASE语句
3,并置操作符?
以下是一些并置操作示例:
SIGNAL a,STD_LOGIC_VECTOR (3 DOWNTO 0) ;
SIGNAL d,STD_LOGIC_VECTOR (1 DOWNTO 0) ;
...
a <= '1'?'0'?d(1)?'1' ; -- 元素与元素并置,并置后的数组长度为 4
...
IF a? d = "101011" THEN,..–-在 IF条件句中可以使用并置符
KX
康芯科技
3,并置操作符?
【例 4-18】
LIBRARY IEEE ; --或门逻辑描述
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY or2a IS
PORT (a,b,IN STD_LOGIC;
c,OUT STD_LOGIC );
END ENTITY or2a;
ARCHITECTURE one OF or2a IS
BEGIN
c <= a OR b ;
END ARCHITECTURE one;
KX
康芯科技
3,并置操作符?
【 例 4-19】
LIBRARY IEEE; --半加器描述 (1)
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY h_adder IS
PORT (a,b,IN STD_LOGIC;
co,so,OUT STD_LOGIC);
END ENTITY h_adder;
ARCHITECTURE fh1 OF adder is
BEGIN
so <= NOT(a XOR (NOT b)) ; co <= a AND b ;
END ARCHITECTURE fh1;
KX
康芯科技【 例 4-20】
LIBRARY IEEE; --半加器描述 (2)
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY h_adder IS
PORT (a,b,IN STD_LOGIC;
co,so,OUT STD_LOGIC);
END ENTITY h_adder;
ARCHITECTURE fh1 OF h_adder is
SIGNAL abc,STD_LOGIC_VECTOR(1 DOWNTO 0) ;
BEGIN
abc <= a & b ;
PROCESS(abc)
BEGIN
CASE abc IS
WHEN "00" => so<='0'; co<='0' ;
WHEN "01" => so<='1'; co<='0' ;
WHEN "10" => so<='1'; co<='0' ;
WHEN "11" => so<='0'; co<='1' ;
WHEN OTHERS => NULL ;
END CASE;
END PROCESS; END ARCHITECTURE fh1 ;
KX
康芯科技【 例 4-21】
..,--半加器描述 (3)
SIGNAL abc,cso,STD_LOGIC_VECTOR(1 DOWNTO 0 );
BEGIN
abc <= a & b ; co <= cso(1) ; so <= cso(0) ;
PROCESS(abc)
BEGIN
CASE abc IS
WHEN "00" => cso<="00" ;
WHEN "01" => cso<="01" ;
WHEN "10" => cso<="01" ;
WHEN "11" => cso<="10" ;
END CASE;
END PROCESS;
END ARCHITECTURE fh1;
KX
康芯科技【 例 4-22】
LIBRARY IEEE; --1位二进制全加器顶层设计描述
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY f_adder IS
PORT (ain,bin,cin,IN STD_LOGIC;
cout,sum,OUT STD_LOGIC );
END ENTITY f_adder;
ARCHITECTURE fd1 OF f_adder IS
COMPONENT h_adder
PORT ( a,b,IN STD_LOGIC;
co,so,OUT STD_LOGIC);
END COMPONENT ;
COMPONENT or2a
PORT (a,b,IN STD_LOGIC;
(接下页 )
KX
康芯科技
(接上页 )
c,OUT STD_LOGIC);
END COMPONENT;
SIGNAL d,e,f,STD_LOGIC;
BEGIN
u1,h_adder PORT MAP(a=>ain,b=>bin,co=>d,so=>e);
u2,h_adder PORT MAP(a=>e,b=>cin,co=>f,so=>sum);
u3,or2a PORT MAP(a=>d,b=>f,c=>cout);
END ARCHITECTURE fd1;
KX
康芯科技
4.3 1位二进制全加器的 VHDL设计
4.3.2 全加器描述和例化语句
COMPONENT 元件名 IS
PORT (端口名表 ) ;
END COMPONENT 文件名 ;
COMPONENT h_adder
PORT ( c,d,IN STD_LOGIC;
e,f,OUT STD_LOGIC);
例化名,元件名 PORT MAP( [端口名 =>] 连接端口名,...);
KX
康芯科技
4.3 1位二进制全加器的 VHDL设计
4.3.3 VHDL设计基本概念和语言现象小节
VHDL库:
LIBRARY语句打开 VHDL库,IEEE库,标准库 STD,工作库 WORK,,,
程序包:
USE语句声明使用程序包,STD_LOGIC_1164程序包,
STANDARD标准包 ……
KX
康芯科技
4.3 1位二进制全加器的 VHDL设计
4.3.3 VHDL设计基本概念和语言现象小节数据类型:
标准逻辑位数据类型 Std_logic,定义值有 9种,'0','1'、
'Z','X'...
数据对象:
信号,SIGNAL,变量,VERIABLE,常数,CONSTANT
信号属性:
信号属性函数 EVENT,LAST_VALUE。
KX
康芯科技
4.3 1位二进制全加器的 VHDL设计
4.3.3 VHDL设计基本概念和语言现象小节时钟检测:
时钟检测上升沿检测表式,CLK'EVENT AND CLK='1'、
RISING_EDGE()。
时序电路:
不完整条件语句产生时序电路,IF … THEN … END IF,
IF … THEN … ELSIF … THEN … END IF
KX
康芯科技
4.3 1位二进制全加器的 VHDL设计
4.3.3 VHDL设计基本概念和语言现象小节异步时序:
好的异步时序应该用多个时钟进程实现 。
真值表表达:
表达方法之一是用 CASE_WHEN语句,但要注意 OTHERS的应用 。
标准逻辑矢量:
STD_LOGIC_VECTOR类型可用于定义总线或数组的数据类型 。
KX
康芯科技
4.3 1位二进制全加器的 VHDL设计
4.3.3 VHDL设计基本概念和语言现象小节并置操作符:
并置操作符?可用于合并两个或多个逻辑矢量,构建成新的数组 。
元件例化:
由元件调用声明语句 COMPONENT和映射语句 PORT MAP( )构成 。
KX
康芯科技
4.4 VHDL文本输入设计方法初步
4.4.1 编辑输入并保存 VHDL源文件
1,为本项工程设计建立文件夹
2,输入设计项目和存盘图 4-12 建立文本编辑器对话框
KX
康芯科技图 4-13 在文本编辑窗中输入 VHDL文件并存盘
KX
康芯科技
4.4 VHDL文本输入设计方法初步
4.4.2 将当前设计设定为工程和选定目标器件图 4-14 设定当前文件为工程
KX
康芯科技
4.4.2 将当前设计设定为工程和选定目标器件图 4-15 选定当前工程的目标器件为 EP1K30TC144-3
KX
康芯科技
4.4 VHDL文本输入设计方法初步
4.4.3 选择 VHDL文本编译版本号和排错图 4-16 设定 VHDL编译版本号
KX
康芯科技
4.4 VHDL文本输入设计方法初步
4.4.3 选择 VHDL文本编译版本号和排错图 4-17 消去,Use Quartus Fitter…,项
KX
康芯科技
4.4 VHDL文本输入设计方法初步
4.4.3 选择 VHDL文本编译版本号和排错图 4-18 确定设计文件中的错误
KX
康芯科技
4.4 VHDL文本输入设计方法初步
4.4.4 时序仿真图 4-19 从 SNF文件中输入设计文件的信号节点
(1) 建立波形文件
KX
康芯科技
4.4 VHDL文本输入设计方法初步
4.4.4 时序仿真图 4-20 列出并选择需要观察的信号节点
(2) 输入信号节点
KX
康芯科技
4.4 VHDL文本输入设计方法初步
4.4.4 时序仿真图 4-21 在 Options菜单中取消 Snap to Grid的选择 #
(3) 设置波形参量
KX
康芯科技
4.4 VHDL文本输入设计方法初步
4.4.4 时序仿真图 4-22 设定仿真时间长度
(3) 设置波形参量
KX
康芯科技图 4-23 为输入信号设定必要的测试电平或数据
(4) 为输入信号加上激励电平并存盘
KX
康芯科技图 4-24 为输入信号假如时钟激励信号
(4) 为输入信号加上激励电平并存盘
4.4 VHDL文本输入设计方法初步
4.4.4 时序仿真
KX
康芯科技图 4-25 保存仿真波形文件
(4) 为输入信号加上激励电平并存盘
4.4 VHDL文本输入设计方法初步
4.4.4 时序仿真
KX
康芯科技图 4-26 运行仿真器
(5) 运行仿真器并观察分析波形。
4.4 VHDL文本输入设计方法初步
4.4.4 时序仿真
KX
康芯科技图 4-27 多路选择器 mux21a的仿真波形
(5) 运行仿真器并观察分析波形
4.4 VHDL文本输入设计方法初步
4.4.4 时序仿真
KX
康芯科技图 4-28 打开延时时序分析窗
(5) 运行仿真器并观察分析波形
4.4 VHDL文本输入设计方法初步
4.4.4 时序仿真
KX
康芯科技图 4-29 mux21a
项目的设计层次
(1) 了解设计项目的结构层次。
4.4 VHDL文本输入设计方法初步
4.4.5 设计项目的其他信息和资源配置
KX
康芯科技图 4-30 适配报告中的部分内容
(1) 了解设计项目的结构层次。
4.4 VHDL文本输入设计方法初步
4.4.5 设计项目的其他信息和资源配置
KX
康芯科技图 4-
31
芯片资源编辑窗
(2) 了解器件资源分配情况。
4.4 VHDL文本输入设计方法初步
4.4.5 设计项目的其他信息和资源配置
KX
康芯科技
(3) 了解设计项目速度 /延时特性。
4.4 VHDL文本输入设计方法初步
4.4.5 设计项目的其他信息和资源配置
(4) 资源编辑。
KX
康芯科技
4.4 VHDL文本输入设计方法初步
4.4.6 引脚锁定图 4-32 Device View窗
KX
康芯科技
4.4 VHDL文本输入设计方法初步
4.4.6 引脚锁定图 4-33
引脚锁定
KX
康芯科技
4.4 VHDL文本输入设计方法初步
4.4.7 编程下载和测试图 4-34 设置编程下载方式
KX
康芯科技
4.4 VHDL文本输入设计方法初步
4.4.7 编程下载和测试图 4-35 设置编程下载方式 通过 JTAG口向 FPGA下载 SOF文件
KX
康芯科技
4.4 VHDL文本输入设计方法初步
4.4.8 设计流程归纳图 4-36 MAX+plusII一般设计流程步骤1,建立工作库文件夹步骤2,输入设计项目原理图/ V H D L 代码步骤3,存盘,注意原理图/ 文本取名步骤4,将设计项目设置成P r o j e c t
步骤5,选择目标器件步骤6,
启动编译步骤7,建立仿真波形文件步骤8,仿真测试和波形分析步骤9,引脚锁定并编译步骤1 0,编程下载/ 配置步骤1 1,
硬件测试
KX
康芯科技
4.4 VHDL文本输入设计方法初步
4.4.9 MAX+plusII在 Windows 2000/XP上的安装设置
(1) 首先安装 MAX+plusII;
(2) 选择 (,开始,→,设置,→,控制面板,);
(3) 双击,游戏选项,,然后选择,添加,→,添加其他,→,从磁盘安装,命令,再单击,浏览,浏览驱动所在目录,MAX+plusII的安装目录
\drivers\win2000;
(4) 选择 Win2000.inf,单击,确定,;
(5) 在,数字签名未找到,对话框中,选择,是,;
(6) 在,选择一个设备驱动程序,窗口中,选择,Altera ByteBlaster”,并单击,下一步,;
(7) 在接下去的,数字签名未找到,对话框中,仍选择,是,;
(8) 安装完成,依提示,重新启动计算机。
KX
康芯科技习 题
4-1 画出与下例实体描述对应的原理图符号元件:
ENTITY buf3s IS -- 实体 1,三态缓冲器
PORT (input,IN STD_LOGIC ; -- 输入端
enable,IN STD_LOGIC ; -- 使能端
output,OUT STD_LOGIC ) ; -- 输出端
END buf3x ;
ENTITY mux21 IS --实体 2,2选 1多路选择器
PORT (in0,in1,sel,IN STD_LOGIC;
output,OUT STD_LOGIC);
KX
康芯科技习 题
4-2 图 4-37所示的是 4选 1多路选择器,试分别用 IF_THEN语句和 CASE语句的表达方式写出此电路的 VHDL程序,选择控制的信号 s1和 s0的数据类型为
STD_LOGIC_VECTOR; 当 s1='0',s0='0'; s1='0',s0='1'; s1='1',s0='0'
和 s1='1',s0='1'分别执行 y<=a,y<=b,y<=c,y<=d。
图 4-37 4选 1多路选择器
KX
康芯科技习 题
4-3 图 4-38所示的是双 2选 1多路选择器构成的电路 MUXK,对于其中
MUX21A,当 s='0'和 '1'时,分别有 y<='a'和 y<='b'。 试在一个结构体中用两个进程来表达此电路,每个进程中用 CASE语句描述一个 2选 1多路选择器
MUX21A。
图 4-38 双 2选 1多路选择器
KX
康芯科技习 题
4-4 图 4-39是一个含有上升沿触发的 D触发器的时序电路,试写出此电路的
VHDL设计文件。
图 4-39 时序电路图
KX
康芯科技习 题
4-5 给出 1位全减器的 VHDL描述 。 要求:
(1) 首先设计 1位半减器,然后用例化语句将它们连接起来,图 4-40中
h_suber是半减器,diff是输出差,s_out是借位输出,sub_in是借位输入 。
(2) 以 1位全减器为基本硬件,构成串行借位的 8位减法器,要求用例化语句和生成语句来完成此项设计 (减法运算是 x – y - sun_in = diffr)。
图 4-40 1位全减器
KX
康芯科技习 题
4-6 根据图 4-41,写出顶层文件 MX3256.VHD的 VHDL设计文件 。
图 4-41 题
4-6电路图
KX
康芯科技实 验 与 设 计
4-1 简单组合电路的设计
(1) 实验目的,熟悉 Max+plusⅡ 的 VHDL文本设计流程全过程,学习简单组合电路的设计,多层次电路设计,仿真和硬件测试 。
(2) 实验内容 1,首先按照 4.4节给出的步骤,利用 MAX+plusⅡ 完成 2选 1
多路选择器的文本编辑输入 (mux21a.vhd)和仿真测试等步骤,给出图 4-
27所示的仿真波形 。 最后在实验系统上进行硬件测试,实际验证本项设计的功能 。
(3) 实验内容 2,将 4.4节的多路选择器看成是一个元件 mux21a,利用元件例化语句描述图 4-38,并将此文件放在同一目录 E:\muxfile中 。
按照 4.4节的步骤对上例分别进行编译、综合、仿真。并对其仿真波形 (图 4-42)作出分析说明。
KX
康芯科技实 验 与 设 计以下是部分参考程序:
..,
COMPONENT MUX21A
PORT ( a,b,s,IN STD_LOGIC;
y,OUT STD_LOGIC);
END COMPONENT ;
...
u1,MUX21A PORT MAP(a=>a2,b=>a3,s=>s0,y=>tmp);
u2,MUX21A PORT MAP(a=>a1,b=>tmp,s=>s1,y=>outy);
END ARCHITECTURE BHV ;
KX
康芯科技实 验 与 设 计
(4) 实验内容 3,引脚锁定以及硬件下载测试 。 若目标器件是 EF1K30,建议选实验电路模式 5,用键 1(PIO0,引脚号为 8)控制 s0; 用键 2(PIO1,引脚号为 9)控制 s1; a3,a2和 a1分别接 clock5(引脚号为 56),clock0(引脚号为 126)和
clock2(引脚号为 54);输出信号 outy仍接扬声器 spker(引脚号为 99)。 通过短路帽选择 clock0接 256Hz信号,clock5接 1024Hz,clock2接 8Hz信号 。 最后进行编译,下载和硬件测试实验 。
(5) 实验报告,根据以上的实验内容写出实验报告,包括程序设计,软件编译,仿真分析,硬件测试和详细实验过程;给出程序分析报告,仿真波形图及其分析报告 。
(6) 附加内容,根据本实验以上提出的各项实验内容和实验要求,设计 1位全加器 。
首先用 Max+plusⅡ 完成 4.3节给出的全加器的设计,包括仿真和硬件测试 。
实验要求分别仿真测试底层硬件或门和半加器,最后完成顶层文件全加器的设计和测试,给出设计原程序,程序分析报告,仿真波形图及其分析报告 。
KX
康芯科技实 验 与 设 计
(7) 实验习题,以 1位二进制全加器为基本元件,用例化语句写出 8位并行二进制全加器的顶层文件,并讨论此加法器的电路特性 。
图 4-42 仿真波形
KX
康芯科技实 验 与 设 计
4-2 简单时序电路的设计
(1) 实验目的,熟悉 MAX+plusⅡ 的 VHDL文本设计过程,学习简单时序电路的设计,仿真和测试 。
(2) 实验内容 1,根据实验 4-1的步骤和要求,设计触发器 (使用例 4-7),
给出程序设计,软件编译,仿真分析,硬件测试及详细实验过程 。
(3) 实验内容 2,根据实验 4-1的步骤和要求,设计锁存器 (使用例 4-16),
同样给出程序设计,软件编译,仿真分析,硬件测试及详细实验过程 。
(4) 实验内容 3,只用一个 1位二进制全加器为基本元件和一些辅助的时序电路,设计一个 8位串行二进制全加器,要求:
KX
康芯科技实 验 与 设 计
1,能在 8-9个时钟脉冲后完成 8位二进制数 ( 加数被加数的输入方式为并行 )
的加法运算,电路须考虑进位输入 Cin和进位输出 Cout;
2,给出此电路的时序波形,讨论其功能,并就工作速度与并行加法器进行比较;
3,在 FPGA中进行实测 。 对于 GW48 EDA实验系统,建议选择电路模式 1,
键 2,键 1输入 8位加数;键 4,键 3输入 8位被加数;键 8作为手动单步时钟输入;键 7控制进位输入 Cin; 键 9控制清 0;数码 6和数码 5显示相加和;发光管 D1显示溢出进位 Cout。
4,键 8作为相加起始控制,同时兼任清 0;工作时钟由 clock0自动给出,每当键 8发出一次开始相加命令,电路即自动相加,结束后停止工作,并显示相加结果 。 就外部端口而言,与纯组合电路 8位并行加法器相比,此串行加法器仅多出一个加法起始 /清 0控制输入和工作时钟输入端 。
提示:此加法器有并 /串和串 /并移位寄存器各一 。
(5) 实验报告,分析比较实验内容 1和 2的仿真和实测结果,说明这两种电路的异同点 。 详述实验内容 3。