湖南大学EDA第三次实验报告.docx
《湖南大学EDA第三次实验报告.docx》由会员分享,可在线阅读,更多相关《湖南大学EDA第三次实验报告.docx(14页珍藏版)》请在冰点文库上搜索。
![湖南大学EDA第三次实验报告.docx](https://file1.bingdoc.com/fileroot1/2023-5/27/8526ed01-7817-4d41-bb75-a486b6de704a/8526ed01-7817-4d41-bb75-a486b6de704a1.gif)
湖南大学EDA第三次实验报告
EDA第三次实验报告
实验目的:
学习VHDL语言的编程思想与调试方法,学习通过定制LPM原件实现逻辑设计。
实验设计方案:
1:
原理说明
分别用VHDL和LPM定制的方法实现一个二位数的比较电路,根据A是否小于,等于,大于B,相应的输出端F1,F2,F3为1设A=A2A1,B=B2B1,表示两位二进制数,当A2A1>B2B1时F1为1,A2A1B2B1时F3.为1.
结构框图:
用VHDL实验二位比较电路
二位数的比较电路
用LPM定制实现元件比较电路
这里使用两种不同的方法实现同一个功能的元件。
实验流程:
1:
用VHDL编写代码,编译并进行波形仿真,并下载到电路板上去。
2:
用LPM定制比较电路。
具体步骤如下:
新建工程名为bijiao,用行为式描述方法编写代码如上
新建一个波形文件,编译综合分析,并生成波形文件,根据A是否小于,等于,大于B,相应的输出端F1,F2,F3为1设A=A2A1,B=B2B1,表示两位二进制数,当A2A1>B2B1时F1为1,A2A1B2B1时F3.为1.
管脚分配:
管脚分配好后进行下载到实验板上,所得的结果和波形仿真中的一致,说明仿真结果正确。
用LPM定制二位比较器
具体流程:
1:
新建工程所在的文件夹的名称为lpm_bijiao,工程名为lpm_lpm_bijiao,顶层实体名为lpm_bijiao,选择目标器件为EPF10K20TG144-3。
选择QuartusII菜单,Tools->MegaWizardPlig-inManager命令,弹出如图所示的对话框
选择第一个菜单栏单选按钮,定制一个新的宏的、功能模块,按NExt按钮进入如下界面
在窗口中左侧的列表中选择lpm_compare,设置目标器件为FLEX10K,元件的命名为lpm_compare2文件输出类型为VHDL,单击NEXT。
设置数据的宽度为2位,并选择所需要的端口,单击next
设置datab和比较数值的符号类型,单击next
设置流水线,单击next
设置Generate netlist单击next。
选择要生成的文件,单击按钮finish,完成lpm_compare2的定制
打开输出路径下的lpm_compare2_waveforms.Html文件查看仿真的结果如图
思考题:
2:
VHDL中如何调用用户自定义的元件,旧式74系列元件,参数化元件
答:
现调用元件是不需要自定义库的啊只需要保证在一个project里,然后这个工程里面的VHDL中可以相互调用自定义的元件的。
3:
比较VHDL中的signal和variable?
比较对象信号SIGNAL变量VARIABLE
基本用法用于作为电路中的信号连线用于作为进程中局部数据存储单元
适用范围在整个结构体内的任何地方都适用只能在所定义的进程中使用
行为特性在进程最后才对信号赋值立即赋值
4:
VHDL中如何设计电路反馈信号?
答:
VHDL中常用反signal实现反馈。
5:
举例说明常用的VHDL顺序执行和并行执行语句?
答:
·变量赋值语句(VariableEvaluate)
·信号赋值语句(SignalEHDvaluate)
·WAIT语句
·IF语句
·CASE语句
·LOOP语句
·NEXT语句
·EXIT语句
·RETURN语句
·NULL语句
·过程调用语句(ProcedureCall)
·断言语句(Assert)
·REPORT语句
例:
VARIABLEs:
BIT:
=‘0’;
PROCESS(s)
VARIABLEcount:
INTEGER:
=‘0’--变量说明
BEGIN
count:
=s+1--变量赋值
ENDPROCESS;
并行语句主要有以下几种:
·PROCESS--进程语句
·BLOCK--块语句
·CONCURRENTSIGNALASSIGNMENT--并行信号代入语句
·CONDITIONALSIGNALASSIGNMENT--条件信号代入语句
·SELECTIVESIGNALASSIGNMENT--选择信号代入语句
·CONCURRENTPROCEDURECALL--并行过程调用语句
·ASSERT--并行断言语句
·GENERIC--参数传递语句
·COMPONENT_INSTANT--元件例化语句
·GENERATE
例子综合后不需要存储器的VHDL进程
label1:
PROCESS(a,b,c)
┇
BEGIN
┇--其中没有其他同步描述
ANDPROCESSlabel1;
--综合后需要存储器的VHDL进程
label2:
PROCESS
┇
BEGIN
WAITUNTILclk’EVENTANDclk=‘1’;
s<=‘0’;
WAITUNTILclk’EVENTANDclk=‘1’;
s<=‘1’;
ANDPROCESSlabel2;
--生成语句
a)并联或不相联的逻辑门或组合电路。
因为是并联或不相联的,当然是同时执行,这个好理解。
b)由同一个时钟边沿驱动的D触发器,不论D触发器之间是并联、串联或者不相连的。
为什么呢?
因为触发器是在同一个时钟边沿同时翻转的,也就是同时执行,所以本质上就是并行。
顺序语句只有一种情况,就是形成串联的逻辑门或组合电路。
7:
说明VHDL描述VHDL组合逻辑电路时,signal的作用是什么?
这是一个信号的声明,一般在结构体中定义,属于全局变量,在任何进程中都可以调用,这个是最基础的也是最重要的。
实验日志:
1问题:
在第一次利用LPM原件实现二位的比较器时,一开始我以为是基于先前的VHDL基础上的,然后直接在上一个用VHDL的文件夹中创建了一个工程,设置目标器件后没有元件名称lpm_compare2,导致出现如下的窗口
解决方法:
在路径的后面加上原件名称lpm_compare2如图中的蓝色部分。
实验心得:
通过此次实验,首先我对于用QuartusII的设计开发流程更为熟悉,同时对于用VHDL语言各种对于元件的结构式描述,行为式描述,RTL描述和LPM定制元件的实现有了较为熟悉的理解,随着对QuartusIII的开发流程的进一步熟悉,也激发了我在硬件这方面设计的激情,今后我会更加努力在实验中激发自己的创新能力!