slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
EDA 技术 实用教程 PowerPoint Presentation
Download Presentation
EDA 技术 实用教程

Loading in 2 Seconds...

play fullscreen
1 / 101

EDA 技术 实用教程 - PowerPoint PPT Presentation


  • 153 Views
  • Uploaded on

EDA 技术 实用教程. 第5章. VHDL 设计初步. 原理图输入与 VHDL 文本输入设计的区别 Graphic is what you draw is what you get “ tell me what hardware you want and I will give it to you” VHDL is what you write is what functional you get

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'EDA 技术 实用教程' - kalyca


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

EDA技术实用教程

第5章

VHDL设计初步

slide2

原理图输入与VHDL文本输入设计的区别

    • Graphic is what you draw is what you get
      • “ tell me what hardware you want and I will give it to you”
    • VHDL is what you write is what functional you get
      • “ tell me how your circuit should behave and the VHDL compiler will give you the hardware that does the job”
      • but the designer can not control how the circuit implement
slide3

是什么是VHDL?

Very high speed integrated Hardware Description Language (VHDL)

  • 是IEEE、工业标准硬件描述语言
  • 用语言的方式而非图形等方式描述硬件电路
    • 容易修改
    • 容易保存
  • 特别适合于设计的电路有:
    • 复杂组合逻辑电路,如:
      • 译码器、编码器、加减法器、多路选择器、地址译码器…...
    • 状态机
    • 等等……..
slide4

VHDL的功能和标准

  • VHDL 描述
    • 输入端口
    • 输出端口
    • 电路的行为和功能
  • VHDL有过两个标准:
    • IEEE Std 1076-1987 (called VHDL 1987)
    • IEEE Std 1076-1993 (called VHDL 1993)
slide5

VHDL Synthesis vs. other HDLs Synthesis

  • VHDL: “tell me how your circuit should behave and I will give you hardware that does the job”
  • ABEL, PALASM, AHDL:
        • “tell me what hardware you want and I will give it to you”
slide6

Why using VHDL instead of Graphic

  • Easy to Modify
  • It is more powerful than Graphic
  • VHDL is a portable language because
    • is device independent
    • the same code can be applied to Device manufactured by Company A or Company B
slide7
基本结构包括:

 库(Library)、程序包(Package)

 实体(Entity)

 结构体(Architecture)

 配置(Configuration)

VHDL程序基本结构

slide8

库、程序包

实体(Entity)

结构体

(Architecture)

进程 或其它并行结构

配置(Configuration)

slide9

5.1 多路选择器VHDL描述

5.1.1 2选1多路选择器的VHDL描述

【例5-1】

ENTITYmux21aIS

PORT( a, b : IN BIT ;

s : IN BIT;

y :OUT BIT ) ;

END ENTITYmux21a ;

ARCHITECTUREone OFmux21aIS

BEGIN

y <= aWHEN s = '0'ELSE

b ;

END ARCHITECTUREone ;

实体

图5-1 mux21a实体

结构体

图5-2 mux21a结构体

任何一个程序黄色部分不能少

slide10

5.1.1 2选1多路选择器的VHDL描述

【例5-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 ;

【例5-3】

. . .

ARCHITECTURE one OF mux21a IS

BEGIN

y <= (a AND (NOT s)) OR (b AND s) ;

END ARCHITECTURE one;

slide11

5.1.1 2选1多路选择器的VHDL描述

【例5-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 ;

slide12

5.1.1 2选1多路选择器的VHDL描述

图5-3 mux21a功能时序波形

slide13

5.1.2 VHDL相关语句说明

1. 实体表达

【例5-5】

ENTITY e_name IS

PORT ( p_name : port_m data_type;

...

p_namei : port_mi data_type );

END ENTITY e_name;

或:

【例5-6】

ENTITY e_name IS

PORT ( p_name : port_m data_type;

...

p_namei : port_mi data_type );

END e_name;

slide14

5.1.2 VHDL相关语句说明

2. 实体名

3. PORT语句和端口信号名

4. 端口模式

INOUT

BUFFER

OUT

IN

5. 数据类型BIT

slide15

5.1.2 VHDL相关语句说明

6. 结构体表达

【例5-7】

ARCHITECTURE arch_name OF e_name IS

(说明语句)

BEGIN

(功能描述语句)

END ARCHITECTURE arch_name ;

或:

【例5-8】

ARCHITECTURE arch_name OF e_name IS

(说明语句)

BEGIN

(功能描述语句)

END arch_name ;

7. 信号传输(赋值)符号和数据比较符号

slide16

5.1.2 VHDL相关语句说明

8. 逻辑操作符AND、OR、NOT

9. IF_THEN条件语句

10. WHEN_ELSE条件信号赋值语句

赋值目标 <= 表达式 WHEN 赋值条件 ELSE

表达式 WHEN 赋值条件 ELSE

...

表达式 ;

11. PROCESS进程语句和顺序语句

12. 文件取名和存盘

slide17

5.1.3 VHDL设计的基本概念和语句小节

实体

结构体

端口定义

端口模式

数据类型

信号赋值符

条件比较符

 延时

逻辑操作符

IF条件语句

并行条件语句

进程语句

顺序语句

并行语句

文件取名

文件存盘

slide18

5.2 寄存器描述及其VHDL语言现象

5.2.1 D触发器的VHDL描述

【例5-9】

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 ;

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;

D触发器

slide19

比较用5种不同语句的D触发器VHDL程序

Entity test1 is

port (clk, d : in bit;

q : out bit);

end test1;

architecture body of test1 is

signal q1 : bit ;

begin

process (clk)

begin

if clk='1' AND clk’last_value='0'

then

q1 <= d;

end if;

q <= q1 ;

end process;

end test1_body;

LIBRARY IEEE;

USE IEEE.std_logic_1164.all;

Entity test1 is

port (clk, d : in bit;

q : out bit);

end test1;

architecture body of test1 is

begin

process (clk,d)

begin

if rising_edge(clk) then

q <= d;

end if;

end process;

end test1_body;

Entity test1 is

port (clk : in bit;

d : in bit;

q : out bit);

end test1;

architecture body

of test1 is

signal q1 : bit ;

begin

process (clk)

begin

if (clk = ‘1’)

then

q1 <= d;

end if;

q <= q1 ;

end process;

end body;

Entity test1 is

port (clk : in bit;

d : in bit;

q : out bit);

end test1;

architecture body

of test1 is

signal q1 : bit ;

begin

process (clk,d)

begin

if (clk = ‘1’)

then

q1 <= d;

end if;

q <= q1 ;

end process;

end body;

They are all the same

DFF

slide20

How Many Registers?

  • ENTITY reg1 IS
    • PORT ( d : in BIT;
        • clk : in BIT;
        • q : out BIT);
  • END reg1;
  • ARCHITECTURE reg1 OF reg1 IS
  • SIGNAL a, b : BIT;
  • BEGIN
    • PROCESS (clk)
    • BEGIN
    • IF clk='1' AND clk’event THEN
        • a <= d;
        • b <= a;
        • q <= b;
      • END IF;
    • END PROCESS;
  • END reg1;
slide22

How Many Registers?

  • ENTITY reg1 IS
    • PORT ( d : in BIT;
        • clk : in BIT;
        • q : out BIT);
  • END reg1;
  • ARCHITECTURE reg1 OF reg1 IS
  • BEGIN
    • PROCESS (clk)
    • VARIABLE a, b : BIT;
    • BEGIN
    • IF clk='1' AND clk’event THEN
        • a := d;
        • b := a;
        • q <= b;
      • END IF;
    • END PROCESS;
  • END reg1;
slide23

A

0

1

0

0

1

B

1

1

0

用VHDL设计4位计数器

取整数数据类型,为什么?

整数取值范围

端口信号模式取

BUFFER,为什么?

注意整数和位的不同表达方式!

slide24

修改后的程序

运算符加载

注意,信号

端口模式和

数据类型的

改变!

注意,引

进内部信

号矢量!

slide25

综合后的计数器电路RTL图

组合电路加1器

4位锁存器

输出反馈

锁存信号

slide26

用VHDL设计7段16进制译码器

用CASE语句完成真值表的功能

向7段数码

管输出信号,

最高位控制

小数点

slide27

注意,此语句必须加入

4位加法

计数器

7段译码器

信号输出

8位总线输出

slide28

数据对象信号Signal 和变量 Variable

  • Signal Assignment
    • receive the assign value after a period of time
  • Variable Assignment
    • happens immediately when the statement is executed, no delay
slide29

Signals vs. Variables

SIGNALS VARIABLES

Represent Circuit Represent local storage

Interconnect

Global Scope (anywhere) Local Scope

(inside process)

Updated at end of PROCESS Updated Immediately

(new value not available) (new value available)

UTILITY:

SCOPE:

BEHAVIOR:

slide30

Why ????

例1

case muxval is

when 0 => q <= i0;

when 1 => q <= i1;

when 2 => q <= i2;

when 3 => q <= i3;

when others => null;

end case;

end process;

END body_mux4;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY mux4 IS

PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC;

q : OUT STD_LOGIC);

END mux4;

ARCHITECTURE body_mux4 OF mux4 IS

signal muxval : integer;

BEGIN

process(i0,i1,i2,i3,a,b)

begin

muxval <= 0;

if (a = '1') then

muxval <= muxval + 1;

end if;

if (b = '1') then

muxval <= muxval + 2;

end if;

slide31

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY mux4 IS

PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC;

q : OUT STD_LOGIC);

END mux4;

ARCHITECTURE body_mux4 OF mux4 IS

BEGIN

process(i0,i1,i2,i3,a,b)

variable muxval : integer range 0 to 3;

begin

muxval := 0;

if (a = '1') then

muxval := muxval + 1;

end if;

if (b = '1') then

muxval := muxval + 2;

end if;

case muxval is

when 0 => q <= i0;

when 1 => q <= i1;

when 2 => q <= i2;

when 3 => q <= i3;

when others => null;

end case;

end process;

END body_mux4;

slide32

用一位全加器设计

LIBRARY IEEE;

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 I

BEGIN

so <= (a OR b)AND(a NAND b);

co <= NOT( a NAND b);

END ARCHITECTURE fh1;

1位二进制半加器

slide33

1位二进制全加器

外部端口

内部端口

端口连线

slide35

5.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','-');

STD_LOGIC所定义的9种数据的含义是:

‘U’表示未初始化的; ‘X’表示强未知的; ‘0’表示强逻辑0; ‘1’表示强逻辑1; ‘Z’表示高阻态; ‘W’表示弱未知的; ‘L’表示弱逻辑0; ‘H’表示弱逻辑1; ‘-’表示忽略。

slide36

5.2.2 D触发器VHDL描述的语言现象说明

2. 设计库和标准程序包

使用库和程序包的一般定义表式是:

LIBRARY <设计库名>;

USE < 设计库名>.<程序包名>.ALL ;

3. SIGNAL信号定义和数据对象

【例5-10】

ARCHITECTURE bhv OF DFF1 IS

BEGIN

PROCESS (CLK)

BEGIN

IF CLK'EVENT AND CLK = '1'

THEN Q <= D ;

END IF;

END PROCESS ;

END ;

slide37

5.2.2 D触发器VHDL描述的语言现象说明

4. 上升沿检测表式和信号属性函数EVENT

关键词EVENT是信号属性,VHDL通过以下表式来测定某信号的跳变边沿:

<信号名>'EVENT

slide38

5.2.2 D触发器VHDL描述的语言现象说明

5. 不完整条件语句与时序电路

【例5-11】

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 ;

slide39

5. 不完整条件语句与时序电路

图5-5 例5-11的电路图

slide40

5. 不完整条件语句与时序电路

【例5-12】

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

图5-6 例5-12的电路图

slide41

5.2.3 实现时序电路的VHDL不同表达方式

【例5-13】

...

PROCESS (CLK)

BEGIN

IF CLK'EVENT AND (CLK='1') AND (CLK'LAST_VALUE='0')

THEN Q <= D ; --确保CLK的变化是一次上升沿的跳变

END IF;

END PROCESS ;

【例5-14】

...

PROCESS (CLK)

BEGIN

IF CLK='1' AND CLK'LAST_VALUE='0' --同例5-13

THEN Q <= D ;

END IF;

END PROCESS ;

slide42

5.2.3 实现时序电路的VHDL不同表达方式

【例5-15】

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) -- CLK的数据类型必须是STD_LOGIC

THEN Q1 <= D ;

END IF;

Q <= Q1 ;

END PROCESS ;

END ;

slide43

5.2.3 实现时序电路的VHDL不同表达方式

【例5-16】 ...

PROCESS

BEGIN

wait until CLK = '1' ; --利用wait语句

Q <= D ;

END PROCESS;

【例5-17】...

PROCESS (CLK)

BEGIN

IF CLK = '1'

THEN Q <= D ; --利用进程的启动特性产生对CLK的边沿检测

END IF;

END PROCESS ;

【例5-18】...

PROCESS (CLK,D) BEGIN

IF CLK = '1' --电平触发型寄存器

THEN Q <= D ;

END IF;

END PROCESS ;

slide44

5.2.3 实现时序电路的VHDL不同表达方式

图5-7 边沿型触发器时序波形

图5-8 电平触发型寄存器的时序波形

slide45

5.2.4 异步时序电路设计 【例5-19】

...

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 ;

图5-9 例5-19综合的电路

slide46

5.2.5 VHDL设计基本概念和语言现象小节

VHDL库

程序包

数据类型

数据对象

信号属性

时钟检测

时序电路

异步时序

slide47

5.3 1位二进制全加器的VHDL设计

图5-10半加器h_adder电路图

图5-11 全加器f_adder电路图

slide48

5.3.1 半加器描述和CASE语句

表5-1 半加器h_adder逻辑功能真值表

a b so co

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

1. CASE语句

CASE语句的一般表式是:

CASE <表达式> IS

When <选择值或标识符> => <顺序语句>; ... ; <顺序语句> ;

When <选择值或标识符> => <顺序语句>; ... ; <顺序语句> ;

...

END CASE ;

slide49

5.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)

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条件句中可以使用并置符

slide50

5.3.1 半加器描述和CASE语句

【例5-20】

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 fu1;

【例5-21】

LIBRARY IEEE; --半加器描述(1)

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY adder IS

PORT (a, b : IN STD_LOGIC;

co, so : OUT STD_LOGIC);

END ENTITY adder;

ARCHITECTURE fh1 OF adder is

BEGIN

so <= NOT(a XOR (NOT b)) ;

co <= a AND b ;

END ARCHITECTURE fh1;

slide51

【例5-22】

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 ;

slide52

【例5-22】

... --半加器描述(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;

slide53

【例5-23】

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;

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;

slide54

5.3.2 全加器描述和例化语句

元件例化语句由两部分组成,第一部分是对一个现成的设计实体定义为一个元件,语句的功能是对待调用的元件作出调用声明,它的最简表达式如下所示:

COMPONENT 元件名 IS

PORT (端口名表) ;

END COMPONENT 文件名 ;

元件例化语句的第二部分则是此元件与当前设计实体(顶层文件)中元件间及端口的连接说明。语句的表达式如下:

例化名 : 元件名 PORT MAP( [端口名 =>] 连接端口名,...);

slide55

VHDL 设计流程 :V-S-F-P

Use any Text Editor

to input your design

VHDL

Entry

Use any VHDL

Compiler to convert

your language design

to Gate level with

optimization in term

of Speed / Area

Synthesis

To map the logic

to Altera Device Architecture

e.g. LUT, Carry/Cascade Chain,

EAB......(further logic optimization)

Fitting

Architecture Synthesis

Configure/Programming the Altera Device

and do on board debugging,

prototyping or production

Perogr.

Down

Load

slide56

VHDL文本输入设计流程

STEP2:输入设计项目

原理图/VHDL文本代码

STEP3:存盘,注意

原理图/文本取名

STEP4:将设计项

目设置成Project

STEP5:选

择目标器件

STEP1:建立

工作库文件夹

STEP8:仿真测

试和波形分析

STEP7:建立仿

真波形文件

STEP6:

启动编译

STEP10:编程

下载/配置

STEP9:引脚

锁定并编译

STEP11:

硬件测试

slide57

5.4 VHDL文本输入设计方法初步

为设计全加器

新建一个文

件夹作工作库

文件夹名取为

My_prjct

注意,不可

用中文!

slide58

新建一个设

计文件

使用文本输入方

法设计,必须选择

打开文本编辑器

5.4.1 编辑输入并保存VHDL源文件

slide59

图5-12 建立文本编辑器对话框

存盘文件名必须

取为:mux21a.vhd

用键盘输入设计

文件:多路选择器

注意,要存在

自己建立的

文件夹中

文本编辑窗

图5-13 在文本编辑窗中输入VHDL文件并存盘

slide60

文件存盘后,

关键词将改变

颜色!否则文

件名一定有错!

slide61

最后注意此路

径指向的改变

首先点击这里

然后选择此项,

将当前的原理图

设计文件设置成

工程

图5-14 设定当前文件为工程

5.4.2 将当前设计设定为工程

slide62

注意,此路径指

向当前的工程!

slide63

首先选择这里

器件系列选择

窗,选择ACEX1K

系列

根据实验板上的

目标器件型号选

择,如选EP1K30

注意,首先消去

这里的勾,以便

使所有速度级别

的器件都能显示

出来

slide65

5.4.3 选择VHDL文本编译版本号和排错

选择此项

选择VHDL1993项

图5-15 设定VHDL编译版本号

slide66

选择此项

消去这里的勾

slide68

5.4.3 选择VHDL文本编译版本号和排错

打开错误提示窗

图5-16 确定设计文件中的错误

slide69

错误所在

错误所在

slide72

时序仿真

首先选择此项,

为仿真测试新

建一个文件

选择波形

编辑器文件

slide73

从SNF文件中

输入设计文件

的信号节点

点击“LIST”

slide74

SNF文件中

的信号节点

用此键选择左窗

中需要的信号

进入右窗

最后点击“OK”

slide75

消去这里的勾,

以便方便设置

输入电平

在Options菜单中消去网格对齐Snap to Grid的选择(消去对勾)

slide76

选择END TIME

调整仿真时间

区域。

选择65微秒

比较合适

slide77

先点击‘b’,将其

点为黑色

用此键改变仿真

区域坐标到合适

位置。

设置输入信号‘b’

的周期为800ns

点击‘1’,使拖黑

的电平为高电平

然后先点击此处

将弹出时钟周期

设置窗

slide80

选择仿真器

运行仿真器

slide81

5.4.4 时序仿真

图5-17 mux21a仿真波形

slide82

引脚锁定

可选择输出“y”

的信号从扬

声器输出

信号a和b输入

两个不同频率

的时钟信号

选择实验电路结构图6

可选择键8作为多

路选择器的输入“s”

slide83

选择实验板上

插有的目标器件

键8的引脚名

作为“s”信号

键8的引脚名

对应的引脚号

slide85

注意,对于GWAK30+板,

时钟引脚必须查阅以下

“时钟了解表1”

信号b由

“clock0”输入

时钟信号,

引脚号为:

126

信号a由

“clock5”输入

时钟信号,

引脚号为:

56

slide86

引脚对应情况

实验板位置 多路选择器信号 通用目标器件引脚名 目标器件EP1K30TC144引脚号

1、键8: s PIO13 27

2、扬声器 y SPEAKER 99

3、时钟输入信号 b CLOCK0 126

4、时钟输入信号 a CLOCK5 56

slide87

选择引脚

锁定选项

引脚窗

slide88

此处输入

信号名

此处输入

引脚名

注意引脚属性

错误引脚名将

无正确属性!

按键

“ADD”即可

slide89

再编译一次,

将引脚信息

进去

slide90

选择编程器,

准备将设计

好的半加器

文件下载到目

器件中去

编程窗

slide91

在编程窗打开

的情况下选择

下载方式设置

选择此项下

载方式

slide93

5.4.5 硬件测试

“s”为高’

电平

注意时钟

频率选择

选择电路

模式为“6”

模式选择键

slide94

CLOCK0:b

频率选择

256Hz

CLOCK5:a

频率选择

1024Hz

slide95

实 验

  • 实验5-1 简单组合电路的设计

(1) 实验目的:熟悉Max+plusⅡ的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。

(2) 实验内容1:首先按照5.4节给出的步骤,利用MAX+plusⅡ完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测试等步骤,给出图5-17所示的仿真波形。最后在实验系统上进行硬件测试,实际验证本项设计的功能。

slide96

实 验

  • 实验5-1 简单组合电路的设计

(3 )实验内容2:将5.4节的多路选择器看成是一个元件mux21a,利用元件例化语句描述图5-20,并将此文件放在同一目录E:\muxfile中。以下是参考程序:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY MUXK IS

PORT (a1,a2,a3,s0,s1 : IN STD_LOGIC;

outy : OUT STD_LOGIC );

END ENTITY MUXK;

ARCHITECTURE BHV OF MUXK IS

COMPONENT MUX21A

PORT ( a,b,s : IN STD_LOGIC;

y : OUT STD_LOGIC);

END COMPONENT ;

SIGNAL tmp : STD_LOGIC;

BEGIN

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 ;

slide97

实 验

  • 实验5-1 简单组合电路的设计

按照5.4节的步骤对上例分别进行编译、综合、仿真。并对其仿真波形(图5-23)作出分析说明。

图5-23 仿真波形

slide98

实 验

  • 实验5-1 简单组合电路的设计

(4) 实验内容3:引脚锁定以及硬件下载测试。若目标器件是EPF10K10,建议选实验电路模式5(附图1-7),用键1(PIO0,引脚号为5)控制s0;用键2(PIO1,引脚号为6)控制s1;a3、a2和a1分别接clock5(引脚号为83)、clock0(引脚号为2)和clock2(引脚号为43);输出信号outy仍接扬声器spker(引脚号为3)。通过短路帽选择clock0接256Hz信号,clock5接1024Hz,clock2接8Hz信号。引脚锁定窗如图5-24所示。最后进行编译、下载和硬件测试实验。

slide99

实 验

  • 实验5-1 简单组合电路的设计

图5-24 实验5-1引脚锁定

slide100

实 验

  • 实验5-1 简单组合电路的设计

(5) 实验报告:根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;给出程序分析报告、仿真波形图及其分析报告。

(6) 附加内容:根据本实验以上提出的各项实验内容和实验要求,设计1位全加器。

首先用Max+plusⅡ完成本章第3节给出的全加器的设计,包括仿真和硬件测试。实验要求分别仿真测试底层硬件或门和半加器,最后完成顶层文件全加器的设计和测试,给出设计原程序,程序分析报告、仿真波形图及其分析报告。

(7) 实验习题:以此1位二进制全加器为基本元件,用例化语句写出8位二进制全加器的顶层文件,并讨论此加法器的电路特性。

slide101

实 验

  • 实验5-2 简单时序电路的设计

(1) 实验目的:熟悉MAX+plusⅡ的VHDL文本设计过程,学习简单时序电路的设计、仿真和硬件测试。

(2) 实验内容1:根据实验5-1的步骤和要求,设计触发器(使用例5-9),给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。

(3) 实验内容2:根据实验5-1的步骤和要求,设计锁存器(使用例5-18),同样给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。

(4) 实验报告:分析比较实验内容1和2的仿真和实测结果,说明这两种电路的异同点,给出实验报告。

(5) 实验思考题:用例5-9中的时钟边沿检测表述,如何获得电平触发型锁存器?