EDA开发实践B实验指导书nWord格式.docx

上传人:b****6 文档编号:20516012 上传时间:2023-01-23 格式:DOCX 页数:61 大小:3.69MB
下载 相关 举报
EDA开发实践B实验指导书nWord格式.docx_第1页
第1页 / 共61页
EDA开发实践B实验指导书nWord格式.docx_第2页
第2页 / 共61页
EDA开发实践B实验指导书nWord格式.docx_第3页
第3页 / 共61页
EDA开发实践B实验指导书nWord格式.docx_第4页
第4页 / 共61页
EDA开发实践B实验指导书nWord格式.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

EDA开发实践B实验指导书nWord格式.docx

《EDA开发实践B实验指导书nWord格式.docx》由会员分享,可在线阅读,更多相关《EDA开发实践B实验指导书nWord格式.docx(61页珍藏版)》请在冰豆网上搜索。

EDA开发实践B实验指导书nWord格式.docx

3.单击“Next”按钮,进入工程名称的设定、工作目录的选择。

图1‐5 

指定工程路径、工程名和顶层实体名

4.如图1‐5所示。

在对话框中第一行选择工程路径;

第二行输入工程名,第三行输入顶层文件的实体名(注意:

工程名必须与顶层实体名相同,工程目录可以随意设置,但必须是英文的目录,工程名跟顶层实体名必须也是英文开头。

不要将文件夹设在计算机已有的安装目录中,更不要将工程文件直接放在安装目录中。

文件夹所在的路径名和文件夹名不能用中文,不能用空格,不能用括号,也不能以数字开头)这里输入encoder8_3;

单击“Next”按钮,出现如图1‐6所示的对话框。

图1‐6 

新建工程文件添加对话框

在图所示的对话框中,可以为工程添加先期已经输入的设计文件,制定用户自定义的元件库的路径,这里没有事先输入好的文件,也没有自定义的元件库,单击“Next”按钮进入下一步,出现如图1‐7所示的对话框。

图1‐7 

新建工程器件选择对话框 

在图所示的对话框中,我们根据本实验箱所选的芯片型号,在Family下拉菜单中选择Cyclone 

系列。

然后在Filters下的Package下拉菜单中选择封装形式FBGA,Pin 

count下拉菜单中选择管脚数672,Speed 

grade下拉菜单中选择速度级别8;

然后在Available 

devices中选择EP2C35F672C8器件。

点击“Next”进入下一步。

5.单击“Next”进入图1‐8所示的对话框,用户指定在Quartus 

II之外的用于设计输入、综合、仿真、时序分析的第三方EDA工具对话框,这里都不选,直接单击“Next”进入工程信息对话框. 

图1‐8在Quartus 

II里面新建工程 

最后单击“Finish”完成工程建立。

图1‐9新建工程完毕 

6.新建设计文件,选择“File|New” 

,在New对话框中选择Device 

Design 

Files下的VHDL 

File,单击OK,完成新建设计文件。

如图1‐10所示。

图1‐10在Quattus 

II里面新建文件

7.在新建设计文件中输入VHDL程序,源代码如下:

LIBRARY 

IEEE;

USE 

IEEE.STD_LOGIC_1164.ALL;

IEEE.STD_LOGIC_ARITH.ALL;

IEEE.STD_LOGIC_UNSIGNED.ALL;

entity 

encoder8_3 

is 

port 

( 

DIN 

:

in 

std_logic_vector(7 

downto 

0);

DOUT:

out 

std_logic_vector(2 

0) 

);

end 

encoder8_3;

architecture 

rt1 

of 

begin 

process(DIN) 

begin 

case 

DIN 

is 

when“10000000”=>

DOUT 

<

“111”;

when“01000000”=>

“110”;

when“00100000”=>

“101”;

when“00010000”=>

“100”;

when“00001000”=>

“011”;

when“00000100”=>

“010”;

when“00000010”=>

“001”;

when“00000001”=>

“000”;

whenothers=>

“zzz”;

endcase;

end 

process;

endrt1;

本例只有一个设计文件,即为顶层设计文件,它的实体名一定要与顶层设计文件名encoder8_3一致,然后保存到工程文件夹Project下,命名为encoder8_3,即为顶层设计文件。

如图1‐11所示。

图1‐11保存文件 

8. 

管脚分配。

在附录A中有详细的管脚分配说明,这里采用第二种方法即使用qsf文件的方法。

在这里,还是把这个过程详细的说明一遍。

管脚分配是FPGA设计的一项必须做的工作,我们在设计完FPGA芯片里面的内容后需要把设计的顶层的接口与FPGA片外的管脚连接起来,只有这样我们的设计才能运行。

从第七步可以得知,设计中的顶层接口就是DIN[7:

0]和DOUT[2:

0],一共11个。

就是说这11个接口要与FPGA片外的引脚相连。

8‐3编码器是通过8路编码,观察3路的输出。

所以DIN[7:

0]要与平台上的8个拨码开关相连,DOUT[2:

0]要与平台3个LED灯相连。

这样8个拨码开关的编码通过3个LED灯观察到。

在建立QuartusII工程的时候,会自动建立一个与工程名一样的qsf文件。

打开工程中的qsf文件,如图1‐12。

会看到工程的信息。

图1‐12 

qsf文件内容

我们把FPGA所有的固定好的管脚做成一个FPGA2C35_pins.txt文件,要用到那个管脚都可以到这个记事本文件中查找。

打开FPGA2C35_pins.txt文件,找到拨码开关和LED灯的地方。

如图1‐13。

把8个sw全部复制到qsf文件中,同样把LED前3个复制到qsf文件。

图1‐13 

FPGA2C35_pins.txt中拨码开关的位置

然后把sw名字改为DIN, 

LED_DOWN名字改为DOUT。

改好后的qsf文件如图1‐14. 

图1‐14 

改好后的qsf文件

然后把这个qsf文件保存关闭。

9. 

未使用的管脚置成三态。

高阻

平台核心板上的FPGA共有672个管脚,但是只是使用其中的2个,还有大量未使用管脚,我们需要对这些未使用的管脚进行设置,这一步是非常重要的。

QuartusII默认使用的输出接地(意思是设置为低电压,也可以称为逻辑0),如果不进行设置的话,这些管脚都处于工作状态,一方面FPGA的耗电量增加芯片会发烫,这样会降低FPGA芯片的寿命;

另一方面,处于工作状态的管脚可能相互影响。

双击图1‐15界面中的 

CycloneII 

EP2C35F672C8 

弹出如图1‐16的界面, 

图1‐15 

打开FPGA设置

图1‐16 

进入FPGA设置

在图1‐16中点击 

Device 

and 

Pin 

Options, 

弹出图1‐17的界面。

找到 

Unused 

Pins栏,设置成Asinput 

tri‐stated. 

点击确定,回到图1‐16 

,再点击OK返回QuartusII。

图1‐17 

置成 

input 

tri‐stated

10.选择“Processing→Start 

Compilation”,或者单击工具栏中的Start 

Compilation按钮进行全程编译,也可以在“Processing”菜单中选择“Start”子菜单中的分布编译操作。

图1‐18 

编译工程

11.编译的时候,Quartus 

II会给出编译进度,“Compilation 

Report”窗口会给出编译结果,编译 

结果会随着编译进度随时更新。

Message窗口会给出编译过程的具体情况,包括“information,warning,error”等。

“information”多是完成的一些编译的进展描述;

可能会出现很多warning但并不影响编译的进行;

如果出现error,那么设计是不成功的,用户需要改正这些错误,然后重新 

编译。

可以对错误进行定位,选中错误信息,右击,在弹出的菜单中选择Locate来实现对错误的定位。

编译成功以后,会出现如下图所示的提示。

图1‐19 

编译结果提示

12. 

下载配置FPGA。

连接好USB‐Blaster,具体的安装步骤在附录C中,然后把平台电源打开,这里需要的注意的是USB‐Blaster不能带电插拔。

在QuartusII中点击选择Tools‐Programmer或者单击工具栏上的

,弹出如图1‐20的界面。

如果USB‐Blaster连接正确会在 

Hardware 

Setup的右侧出现 

USB‐Blaster[USB 

‐0] 

确认Program/Configure下面的勾打上。

下载的文件是QuartusII编译生成的encoder8_3.sof 

点击 

Start开始下载 

图1‐20 

下载界面

如果发现蜂鸣器在响,说明第9步的操作有问题,FPGA的管脚没有设置成输入三态。

任意操作SW1—SW8(注意,每一次只能有一位为高,比如00001000),观察LED灯的变化,分析是否与Verilog 

HDL或VHDL编写的一致。

2. 

3‐8译码器及QuartusII的仿真 

1.学习组合逻辑电路,学习译码器的功能与定义,学习VHDL语言。

II软件的相关操作。

3. 

掌握利用QuartusII做时序和功能仿真 

编写3‐8译码器的Verilog代码和VHDL代码,首先在QuarutsII中做仿真,观察仿真结果与设计源码是否一致,再通过编译并下载到平台上验证。

译码是编码的逆过程,它的功能是将特定含义的二进制码进行辨别,并转换成控制信号,具有译码功能的逻辑电路成为译码器。

译码器可分为两种类型,一种是将一系列代码转换成与之一一对应得有效信号。

这种译码器可以称为唯一地址译码器,它常用于计算机中对存储器单元地址的译码,即将每一个地址代码换成一个有效信号,从而选中对应的单元。

另一种是将一种代码转换成另一种代码,

所以也称为代码变换器。

在本实验中我们先介绍二进制唯一地址译码器,在下一实验中,我们介绍代码变换器。

3线‐8线译码器的真值表见表2‐1, 

表2‐1 

3‐8译码器真值表 

实验箱上的SW1—SW3作为控制信号输入,SW4—SW6作为片选信号输入,LED1—LED8显示输出译码值。

表2‐2 

引脚分配 

1.新建工程,取名decoder3_8,如下图所示。

图2‐1 

指定工程的目录、工程名和顶层实体名

2.新建VHDL设计文件,选择“File|New” 

Files下的VHDL 

3.在新建设计文件中输入VHDL程序,源代码如下:

4、输入完毕,点击 

Start 

Complication 

对QuartusII工程编译,如果有错误返回上一步检查错误,重新编译直到没有错误为止。

5、新建QuartusII的仿真文件。

File菜单下的New,弹出如图2‐2 

选择Vector 

Waveform 

File, 

点击OK。

弹出图2‐3的界面,在左侧栏中双击空白的地方,会弹出图2‐4的界面。

图2‐2 

新建仿真文件

图2‐3 

仿真文件

图2‐4 

插入符号

点击图2‐4中的Node 

Finder, 

弹出图2‐5。

图2‐5 

添加信号

在图2‐5中添加仿真信号,Filer:

选择Pins:

all 

,点击List,在左侧栏中会出现设计源码中所有的信号都列出来,在这个列表中选择要仿真的信号,选中某一个信号后点击“>

”,就会添加到右侧栏中。

点击“》”是把所有信号都添加,这里添加DIN、DOUT、G1、G2和G3,如图2‐5。

然后点击OK返回。

在图2‐4点击OK。

那么会看到选择后的信号出现在图2‐3中。

仿真设计中需要给定输入观察输出的结果,这里DIN、G1、G2和G3是输入,DOUT是输出,分别给定DIN、G1、G2和G3赋初值,右键点击DIN,选择Value菜单中的Count 

Value,也就是把DIN的初值赋为自动增一的变量,如图2‐6 

同样把G1赋为Forcing 

High 

,G2和G3赋为Forcing 

Low 

图2‐6 

为输入赋初值

赋初值后,如图2‐7所示。

然后保存vwf文件,要把 

Add 

to 

Current 

project前面的勾打上。

再重新编译QuartusII工程。

结束后点击图2‐8中的 

Simulation 

图2‐7 

图2‐8 

开始仿真

图2‐9 

仿真结果

等待片刻后出现图2‐9的界面,图中显示的是仿真的结果。

根据VHDL源码分析查看仿真结果与源码中是否一致。

6、管脚分配。

下面把设计下载到FPGA中验证,与实验一和实验二一样,先进行管脚分配,具体步骤这里不再重复,不清楚的读者请查看前两个实验和附录A。

把G1、G2和G3分配给拨码开关的前三个sw0,sw1和sw2 

,DIN分配给拨码开关的sw3、sw4和sw5,DOUT分配给8个LED。

注意管脚分配完毕后一定要把Qsf文件保存退出。

7、未使用的管脚设置三态。

双击QuartusII左上角的CycloneII 

然后点击device 

and 

Pins 

Options,选择Unused 

Pins栏,设置As 

Input 

tri‐stated。

8、编译QuartusII工程,结束后连接好USB‐Blaster和平台的电源之后,在QuartusII中点击Programmer下载生成的.sof文件。

9、观察结果。

拨动SW0—SW5 

,观察LED的变化。

验证是否与源码和仿真的结果一致。

半加器与全加器及图形设计方法 

1.学习半加器和全加器的设计,进一步了解、熟悉和掌握FPGA开发软件Quartus 

II的使用方法 

2.学习Verilog 

HDL和VHDL的编程方法 

3.巩固QuartusII的仿真和图形设计方法。

编写半加器和全加器的Verilog 

代码和VHDL代码并仿真,编译下载验证。

算术运算式数值系统的基本功能,更是计算机中不可缺少的组成单元。

1、半加器 

半加法和全加法是算术运算电路中的基本单元,它们是完成1位二进制相加的一种组合逻辑电路。

一位加法器的真值表见表3‐1;

由表中可以看见,这种加法没有考虑低位来的进位,所以称为半加。

半加器就是实现表3‐1中逻辑关系的电路。

表3‐1 

半加器的真值表 

2、全加器 

全加器能进行加数、被加数和低位来的进位信号相加,并根据求和结果给出该位的 

进位信号。

根据它的功能,可以列出它的真值表,如表3‐2所示。

表3‐2 

全加器的真值表 

3、半减法和全减法 

半减法和全减法与加法器一样是算术运算电路中的基本单元。

半减器和全减器的设计方法和设计加法器相同,但是实际上,为了简化系统结构,通常不设计减法器,而是将减法运算变为加法运算来出来,使运算器即能实现加法器运算,又能实现减法器运算。

一般采用加补码的方法代替减法运算。

图3‐1 

设计原理框图

从原理图中可见,需要有两个数据输入位还有一个低位进位,数据输入我们采用实验箱上的SW1和SW2,进位采用SW3,LED1显示和输出,LED2显示进位输出。

引脚分配情况

表3‐3 

1.新建工程,取名为adder,如下图所示。

图3‐2 

Files

下的VHDL 

4、为设计源码生成图形设计文件。

在QuartusII中点击File菜单,在Create/Update 

中点击 

Create 

Symbol 

file 

for 

Current 

project 

,如图3‐3 

这时QuartusII会检查VHDL源码是否有错误,没有错误的话就会为这个设计源码生成一个带外围接口的图形。

5、在QuartusII新建图形设计文件。

点击File菜单下的New 

,选择Block 

Diagram/Schematic 

File 

,如图3‐4 

点击OK。

图3‐4 

新建图形设计文件

6、在新建的图形设计文件中会看到有很多小点,在随意的一个地方双击鼠标左键,会弹出如图3‐5的界面,打开Project会出现一个adder,在右侧栏同时会显示它的顶层图形。

这个图形就是在第4步,QuarutsII为源码生成的图形设计。

7、点击OK,用鼠标把图形符号拖动到刚才新建的带小点的文件中,从这个图形符号可以看出,VHDL源码中port部分全部显示出来,左边的是输入接口,右侧的是输出接口。

现在需要做的是把这些输入和输出接口与FPGA片外的管脚连接在一起,首先要把这些输入输出接口从FPGA片内引出来。

还是在空白处双击鼠标左键,弹出3‐5的界面,在Name框里输入input 

,会出现input引脚的界面,如图3‐6. 

图3‐6 

添加输入引脚

8、点击OK把input引脚添加到图形设计中,采用同样方法添加其他9个intput和output引脚。

连接adder的外围接口和intput引脚。

按住鼠标左键,从input引脚的末端拖出一条线直到adder对应的信号,每个引脚都是同样操作,完成后如图3‐7所示。

然后双击input引脚,修改名称,如pin_name修改为A 

9、生成“Symbol”文件,新建“Block 

File”文件,在文件中添加刚刚生成的“Symbol”以及输入输出管脚,最后完整的系统顶层模块图如图3‐3所示。

图3‐7 

顶层模块图

10、保存文件,使用qsf或者tcl进行管脚分配(相应的文件在本工程里面都可以找到)。

11、对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。

12、新建“Vector 

File”文件进行波形仿真。

其中A,B为输入数据,Ci低位进位。

图3‐8 

利用vector 

file仿真数据选择器的波形

13、下载完成后,通过 

SW1—SW3控制着输入的电平,观察实验结果。

4. 

寄存器及SignalTapII的使用 

1.学习时序逻辑电路的设计,进一步了解、熟悉和掌握FPGA开发软件Quartus 

II的使用方法

2.了解寄存器的工作原理和设计思路 

3.学习嵌入式逻辑分析仪SignalTapII的使用 

在实验寄存器功能后,增加SignalTapII嵌入式逻辑分析仪的使用。

最终下载到平台上用 

SignalTapII观察FPGA内部信号的波形。

寄存器是计算机和其他数字系统中用来存储代码或数据的逻辑部件。

它的主要组成部分是触发器。

一个触发器能储存一位二进制代码,所以要存储n位二进制代码的寄存器需要n个触发器组成。

寄存器和数据锁存器功能是相同的,不同的区别在于锁存器是电平信号控制,属于电平敏感性,而寄存器一般是由同步时钟信号控制。

两者使用场合不一样,主要取决于控制方式及控制信号和数据之间的时序关系:

若数据有效滞后于控制信号有效,则只能使用锁存器;

若数据提前于控制信号,并要求同步操作,而可以选择寄存器来存放数据。

本实验就是设计一个8 

位的数据寄存器,该寄存器可以对8位信号并行输入的数据进行同步寄存。

另外,该寄存器还有一个异步清零端,低电平有效。

其功能表如表4‐1所示;

设计原理框图如图4‐1所示。

表4‐1 

8位数据寄存器功能表 

图4‐1 

从原理图中可见,需要有一组8bit的可变输入作为输入数据和1bit清零使能位。

数据输入我们采用实验箱上的SW1—SW8,BTN1作为CLR清零使能位。

LED1‐

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1