可编程逻辑器件与EDA技术实验教案.docx
- 文档编号:28817276
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:28
- 大小:220.53KB
可编程逻辑器件与EDA技术实验教案.docx
《可编程逻辑器件与EDA技术实验教案.docx》由会员分享,可在线阅读,更多相关《可编程逻辑器件与EDA技术实验教案.docx(28页珍藏版)》请在冰豆网上搜索。
可编程逻辑器件与EDA技术实验教案
PLD实验教案
电信学院通信系
序言
PLD实验是电信专业的一门专业实验课程,对电信专业的学生具有非常重要的作用。
本实验课与理论课同时进行,与理论课有着较密切的联系。
因此同学们在做本实验之前必须具备以下的基础知识:
1、数字电路的基础知识;
2、电子计算机常用操作系统的使用方法;
3、一定的英语基础;
4、必须有一定的理论知识做基础,与理论课同时进行。
PLD(可编程逻辑器件)是与ISP(在系统可编程)技术和EDA(电子设计自动化)工具紧密结合、同时进行的。
它代表了数字电信领域的最高水平,给数字电路的设计带来了革命性的变化。
从70年代第一片可编程逻辑器件PROM的诞生到现在的CPLD/FPGA,数字系统的设计发生了本质的变化。
从传统的对电路板的设计到现在的基于芯片的设计,使得数字系统设计的效率大大提高,产品更新速度大大加快,设计周期大大变短。
所以同学们学习本课程有着非常重要的意义。
本实验不同于其它实验,他的实验手段和实验方法都有了重大的变化,主要体现在以下几个方面:
首先:
实验方法不同
本实验是在PC平台上,用原理图或文本进行输入,然后进行编译,通过之后再进行波形仿真,如有缺陷,再回过头去对源文件进行修改。
其流程图如下:
其次:
实验手段不同
本实验是利用ISP技术、采用EDA工具、应用PLD器件,在PC平台上进行的。
第三、本实验课的目的
学生学习完本实验课后,应达到如下的要求:
1、能熟练使用本实验的配套EDA软件Mux+plusⅡ;
2、掌握PLD芯片的基本使用方法,能用现代数字系统的设计方法进行基本的数字系统设计;
3、掌握图形编辑和VHDL文本编辑两种设计方法,重点是VHDL文本编辑;
4、具备基本的开发能力,为后续学习打下坚实的基础。
实验一4位二进制计数器设计
1、实验的目的和实验内容
2、
实验目的是掌握MAX+PLUSⅡ原理图输入设计方法,熟悉MAX+PLUSⅡ软件的使用及设计流程;
实验内容要求按照原理图输入方法设计流程,完成4位二进制计数器的设计。
利用EDA工具进行原理图输入设计的优点是,设计者能利用原有的电路知识迅速入门,完成较大规模的电路系统设计,而不必具备许多诸如编程技术、硬件语言等新知识。
MAX+plusII提供了功能强大,直观便捷和操作灵活的原理图输入设计功能,同时还配备了适用于各种需要的元件库,其中包含基本逻辑元件库(如与非门、反向器、D触发器等)、宏功能元件(包含了几乎所有74系列的器件),以及功能强大,性能良好的类似于IPCore的巨功能块LPM库。
但更为重要的是,MAX+plusII还提供了原理图输入多层次设计功能,使得用户能设计更大规模的电路系统,以及使用方便精度良好的时序仿真器。
以传统的数字电路实验相比为例,MAX+plusII提供原理图输入设计功能具有显著的优势:
∙能进行任意层次的数字系统设计。
传统的数字电路实验只能完成单一层次的设计,使得设计者无法了解和实现多层次的硬件数字系统设计;
∙对系统中的任一层次,或任一元件的功能能进行精确的时序仿真,精度达0.1ns,因此能发现一切对系统可能产生不良影响的竞争冒险现象;
∙通过时序仿真,能对迅速定位电路系统的错误所在,并随时纠正;
∙能对设计方案作随时更改,并储存入档设计过程中所有的电路和测试文件;
∙通过编译和编程下载,能在FPGA或CPLD上对设计项目随时进行硬件测试验证。
∙符合现代电子设计技术规范。
传统的数字电路实验利用手工连线的方法完成元件连接,容易对学习者产生误导,以为只要将元件间的引脚用引线按电路图连上即可,而不必顾及引线的长短、粗细、弯曲方式、可能产生的分布电感和电容效应以及电磁兼容性等等十分重要的问题。
2、实验前做好预习
实验前必须充分预习,完成指定的预习内容,并写出预习报告。
认真阅读实验指导书,分析掌握本次实验的基本原理;熟悉实验任务。
计数器是最常用的寄存器逻辑电路,从微处理器的地址发生器到频率计都需要用到计数器。
一般计数器可以分为两类:
加法计数器和减法计数器。
加法计数器每来一个脉冲计数值加1;减法计数器每来一个脉冲计数值减1。
本实验用原理图输入设计方法设计一个4位二进制计数器,通过调用元件库中的74LS161来完成。
74LS161(异步清零同步预置)共有一个时钟输入端CLK,一个清除输入端CLRN,两个计数允许信ENP和ENT,4个可预置数据输入端A、B、C、D,一个置位允许端LDN,4个计数输出端QD-QA,一个进位输出端RCO,其工作模式见下表所示。
74LS161功能表
CLRN
CLK
ENP
ENT
LDN
工作状态
L
X
X
X
X
复位
H
C
X
X
L
预置
H
C
H
H
H
计数
H
X
L
X
H
保持
H
X
X
L
H
保持
3、实验要求
结合理论课所讲授的MAX+PLUSⅡ软件的使用及设计流程,按照实验指导书(附录一)的实验步骤编辑4位二进制计数器的原理图。
学习原理图输入设计方法,但应该更多地关注设计流程,因为除了最初的图形编辑输入外,其它处理流程都与文本(如VHDL文件)输入设计完全一致。
4位二进制计数器的原理图如下:
4位二进制计数器的原理图
4、设计提示
1)打开文件*.gdf,文件要设为工程文件;
2)编译:
每次有修改都要重新编译,编译完成哪些工作需清楚;
3)仿真分析:
加输入节点波形看输出结果,要会分析,包括功能和时序,会做精确地延时、建立/保持时间和Fmax的仿真分析;
4)考虑为什么要进行管脚锁定,设计有哪些输入输出管脚要清楚。
5、预习内容
1)熟悉计数器的工作原理,画出实验原理图;
2)用原理图输入法进行硬件设计的过程;
3)学习实验指导书附录一,对EDA实验箱做一了解;
4)写出预习报告。
实验二用74161实现模为60计数器的层次化设计
1、实验的目的和实验内容
2、
实验目的是学习用原理图输入法实现项目的层次化设计;通过对设计电路的仿真和硬件验证,进一步了解计数器的功能。
整个实验的设计流程基本同实验一,只是要按照原理图输入法分别完成底层文件和顶层文件的设计,先完成底层文件并将其封装为元件,然后调用底层文件进行顶层文件的设计。
本实验设计内容为用74161实现模为60计数器的层次化设计。
首先用一个74161先完成模为12计数器的设计,并将其生成一个元件cnt12。
建立另一个图形文件,调入cnt12一次、74161一个及其他所需元件,经适当连接构成顶层设计文件模为60的计数器(也可以考虑底层元件做成模为15、10或6等其他情形的计数器),完成编译、仿真、下载过程。
2、实验前做好预习
认真阅读实验指导书,分析掌握本次实验的基本原理,熟悉实验任务。
对于M进制=N1XN2计数器的实现可以采用串行进位方式和并行进位方式。
串行进位方式以低位片的进位输出信号做为高位片的时钟输入信号(进位输出加一个非门后再接入,如十进制,当1001时,进位C为高电平,反相后变低电平,第10个脉冲到来进位C为低,反相变高,高位片才做加1计数)。
并行进位方式以低位片的进位输出信号做为高位片的工作状态控制信号,两片的时钟输入端同时接计数输入信号。
3、串行进位方式和并行进位方式两种设计方案
并行进位方式实现六十进制计数器
注:
第59个脉冲RCO变为1,第60个脉冲到来时清零。
串行进位方式实现六十(10*6)进制计数器
当qh2~qh0为101时,第51个脉冲来时,高位片因CLK只有第60个脉冲来时才会来上升沿,此时才置0。
4、设计提示
1)顶层和底层文件要保存在同一个文件夹下,名称要不同;
2)在顶层文件中,注意输入输出添加input、output节点,包括调用来的底层模块;
3)在对哪个文件进行编译时一定将该文件设置为工程文件。
5、预习内容
1)掌握实现M进制=N1XN2计数器的工作原理,画出实验原理图;
2)用原理图输入法进行层次化设计的过程;
3)写出预习报告。
实验三4选1数据选择器设计
1、实验的目的和实验内容
实验的目的是让学生初步掌握组合逻辑电路的文本输入设计法,
实验内容是用VHDL语言完成4选1数据选择器的设计,设计流程同原理图输入法,只是在设计输入采用的是文本方式而不是图形,其他处理流程完全相同。
介绍数据选择器的用途,使学生对所做的硬件设计有一个更深入的了解。
数据选择器是常用的组合逻辑部件之一。
它由组合逻辑电路对数字信号进行控制来完成较复杂的逻辑功能。
它有若干个数据输入端D0、D1、…,若干个控制输入端A0、A1、…,和一个输出端Y0。
在控制输入端加上适当的信号,即可从多个输入数据源中将所需的数据信号选择出来,送到输出端。
使用时也可以在控制输入端加上一组二进制编码程序的信号,使电路按要求输出一串信号。
4选1数据选择器,有D0、D1、D2、D3四个数据输入端,输出端Y,选择输入端(或称地址端)A、B,工作状态选择端(或称使能端)
。
逻辑功能如下表所示,当
为高电平时电路不工作,此时无论A、B处于什么状态,输出Y总为零。
即禁止所有数据输出,当
为低电平时,电路正常工作,被选择的数据送到输出端,如BA=01,则选中数据D1输出。
测试4选1数据选择器的逻辑功能:
数据输入端D0~D3可接电平开关,也可分别接频率不同的脉冲源。
4选1数据选择器真值表
选择
输入
数据输入
选通
输出
BA
D0D1D2D3
Y
XX
00
00
01
01
10
10
11
11
XXXX
0XXX
1XXX
X0XX
X1XX
XX0X
XX1X
XXX0
XXX1
1
0
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1
4选1数据选择器引脚排列图
2、实验前做好预习
认真阅读实验指导书,分析掌握本次实验的基本原理;熟悉实验任务。
将课堂所学到的VHDL语法要素和语句做好复习巩固和消化理解,确定自己的设计方案。
3、设计代码(不唯一)
libraryieee;
useieee.std_logic_1164.all;
entitymux41is
port(a,b,en:
instd_logic;
d:
instd_logic_vector(0to3);
y:
outstd_logic);
end;
architecturebhvofmux41is
signalsel:
std_logic_vector(0to1);
begin
sel<=a&b;
withselselect
y<=d(0)when"00",
d
(1)when"01",
d
(2)when"10",
d(3)when"11",
'Z'whenothers;
endbhv;
4、设计提示
1)注意打开的是文本编辑窗file-new-texteditorfile;
2)设计文件一定要保存在一个文件夹(不能用中文命名)下;
3)初次接触VHDL语言应注意语言程序的基本结构,语法要素、数据类型及运算操作符。
5、预习内容
1)复习数据选择器的工作原理;
2)用VHDL语言进行硬件描述的过程;
3)写出预习报告,写出实验源程序;
实验四七人表决器设计
1、实验的目的和实验内容
2、
通过实验让学生进一步熟悉VHDL语言,了解VHDL语言的行为描述、寄存器传输(RTL)描述、结构描述以及这几种描述在一起的混合描述方式,学会用行为描述方式来设计电路。
实验内容设计一个七人表决电路,可采用上述任一描述方式来实现。
要求严格按照实验流程进行,进行波形仿真测试和下载验证。
2、实验前做好预习
认真阅读实验指导书,分析掌握本次实验的基本原理;熟悉实验任务,确定自己的设计方案。
常见的七人表决器用七个开关作为表决器的7个输入变量,输入变量为逻辑“1”时表示表决者“赞同”;输入变量为“0”时,表示表决者“不赞同”。
输出逻辑“1”时,表示表决“通过”;输出逻辑“0”时,表示表决“不通过”。
当表决器的七个输入变量中有4个以上(含4个)为“1”时,则表决器输出为“1”;否则为“0”。
七人表决器设计方案很多,用VHDL语言设计七人表决器时,也有多种选择,我们可以用结构描述的方式用多个全加器来实现电路,也可以用行为描述。
采用行为描述时,可用一变量来表示选举通过的总人数。
当选举人大于或等于4时为通过,绿灯亮;反之不通过时,红灯亮。
描述时,只须检查每一个输入的状态(通过为“1”不通过为“0”)并将这些状态值相加,判断状态值和即可选择输出。
3、设计提示
1)注意打开的是文本编辑窗file-new-texteditorfile;
2)设计文件一定要保存在一个文件夹(不能用中文命名)下;
3)VHDL不支持连加运算,如C〈=a+b+c;
4)行为描述时需调用std_logic_unsigned程序包,不要忘记书写进程语句。
5)在完成实验任务后,可打开常调用的程序包进行自主学习,还可学习验证课堂上所学的部分设计实例,加深巩固所学知识。
4、预习内容
1)预习七人表决器的工作原理;
2)写出实验源程序;
3)写出预习报告。
5、设计代码(不唯一)
libraryieee;
useieee.std_logic_1164.all;
entityvote7is
port(a:
instd_logic_vector(0to6);
lg,lr:
outstd_logic);
end;
architecturebhvofvote7is
begin
process(a)
variabletmp1:
integerrange0to7;
begin
tmp1:
=0;
foriin0to6loop
ifa(i)='1'thentmp1:
=tmp1+1;
elsetmp1:
=tmp1+0;
endif;
endloop;
endprocess;
lg<='1'whenpass>=4else
'0';
endbhv;
6、采用全加器结构化描述,顶层文件的连接图
libraryieee;
useieee.std_logic_1164.all;
entityf_adderis
port(a,b,cin:
instd_logic;
sum,cout:
outstd_logic);
endf_adder;
architectureaoff_adderis
begin
sum<=axorbxorcin;
cout<=(aandb)or(aandcin)or(bandcin);
enda;
libraryieee;
useieee.std_logic_1164.all;
entityvoteis
port(a,b,c,d,e,f,g:
instd_logic;
y:
outstd_logic);
endvote;
architecturebofvoteis
signalcc,s:
std_logic_vector(0to3);
componentf_adder
port(a,b,cin:
instd_logic;
sum,cout:
outstd_logic);
endcomponent;
begin
u1:
f_adderportmap(a,b,c,s(0),cc(0));
u2:
f_adderportmap(d,e,f,s
(1),cc
(1));
u3:
f_adderportmap(s(0),s
(1),g,s
(2),cc
(2));
u4:
f_adderportmap(cc(0),cc
(1),cc
(2),s(3),cc(3));
y<=cc(3);
endb;
实验五串行数据检测器设计
1、实验的目的和实验内容
实验目的是
学会用状态机进行数字系统设计。
在状态连续变化的数字系统设计中,采用状态机的设计思想有利于提高设计效率,增加程序的可读性,减少错误的发生几率。
同时,状态机的设计方法也是数字系统中一种最常用的设计方法。
一般来说,标准状态机可以分为摩尔(Moore)机和米立(Mealy)机两种。
在摩尔机中,其输出仅仅是当前状态值的函数,并且仅在时钟上升沿到来时才发生变化。
米立机的输出则是当前状态值、当前输出值和当前输入值的函数。
实验内容是采用状态机设计方法从一串二进制码中检测出一个已预置的8位二进制码10001110,每增加一位二进制码相当于增加一个状态,再加上一个初始态,用9个状态可以实现。
其状态机如图6-3所示。
8位二进制码10001110的检测状态机
串行数据检测器用于检测一组或多组由二进制码组成的脉冲序列信号,在数字通信中有着广泛的应用。
当检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。
由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置的对应码相同。
在检测过程中,任何一位不相等都将回到初始状态重新开始检测。
本实验要从一串二进制码中检测出一个已预置的8位二进制码10001110,当检测到该序列后点亮EDA实验箱的LED灯。
2、设计代码
libraryieee;
useieee.std_logic_1164.all;
entityscheckis
port(din,clk,clr:
instd_logic;
ab:
outstd_logic_vector(3downto0));
endscheck;
architecturebofscheckis
signals:
integerrange0to8;
signald:
std_logic_vector(7downto0);
begin
d<="10001110";
p1:
process(clr,clk)
begin
ifclr='1'thens<=0;
elsifclk'eventandclk='1'then
casesis
when0=>ifdin=d(7)thens<=1;elses<=0;endif;
when1=>ifdin=d(6)thens<=2;elses<=1;endif;
when2=>ifdin=d(5)thens<=3;elses<=1;endif;
when3=>ifdin=d(4)thens<=4;elses<=1;endif;
when4=>ifdin=d(3)thens<=5;elses<=0;endif;
when5=>ifdin=d
(2)thens<=6;elses<=2;endif;
when6=>ifdin=d
(1)thens<=7;elses<=2;endif;
when7=>ifdin=d(0)thens<=8;elses<=1;endif;
whenothers=>s<=0;
endcase;
endif;
endprocess;
p2:
process(s)
begin
ifs=8thenab<="1010";
elseab<="1011";
endif;
endprocess;
endb;
3、预习内容
1)预习串行数据检测器的工作原理;
2)写出实验源程序;
3)写出预习报告。
4、问题思考
1)如果预置码可以通过拨码开关设定,程序如何修改?
2)如何输入一串二进制码进行硬件测试?
实验六数字频率计设计
1、实验的目的和实验内容
实验目的是掌握自顶向下的设计方法,体会其优越性;加深利用EDA技术实现数字系统的方法。
实验内容要求用VHDL完成简单6位数字频率计的设计,无须考虑换挡问题,该频率计要求频率测量范围:
1Hz~1MHz;采用一个标准的基准时钟,在单位时间内如1s对被测信号的脉冲数进行计数,即为信号的频率。
频率测量结果用六位数码管稳定显示;
2、频率计原理
数字频率计是一种用十进制数字显示被测信号频率的数字测量仪器,它的基本功能是测量正弦信号、方波信、,尖脉冲信号及其他各种单位时间内变化的物理量,它被广泛应用与航天、电子、测控等领域。
频率的测量方法主要分为2种方法:
(1)直接测量法,即在一定的闸门时间内测量被测信号的脉冲个数。
(2)间接测量法,例如周期测频法、V-F转换法等,间接测频法仅适用测量低频信号。
若某一信号在T秒时间里重复变化了N次,则根据频率的定义可知该信号的频率fs为:
fs=N/T通常测量时间T取1秒或它的十进制时间。
数字频率计的原理框图如图1所示。
测频控制信号发生电路
锁存器
译码驱动电路
计数器
数码
显示
脉冲发生器
待测频率
信号
fin
数字频率计原理框图
1)测频控制信号发生电路
该电路能产生一个1s宽的周期信号,并对频率计的每一计数器使能端进行同步控制:
当高电平时允许计数、低电平时停止计数。
图2为逻辑控制的一种参考的时序关系。
CLK是由脉冲发生器产生的频率为1Hz的标准时钟信号,当测频控制信号发生器的TSTEN端为高电平时允许计数、低电平时停止计数,在停止计数期间,测频控制信号发生器的Load端产生一个上升沿,将计数器在前1s的计数值锁存进锁存器中,并由6个7段译码器将计数结果译出稳定显示。
锁存信号之后经过半个CLK周期,测频控制信号发生器的CLR_CNT端产生一个上升沿,对计数器进行清零。
为下1s的计数操作做准备。
图2测频控制信号发生电路的工作时序
2)计数模块电路
对被测信号进行计数,显示被测信号的频率。
计数器一般采用多位10进制计数器;控制逻辑电路控制计数的工作程序:
准备、计数、显示、复位和准备下一次测量。
其中十进制计数器要求具有计数使能端CNTEN、复位端CLR、进位输出端CO。
将6个十进制计数器级联起来实现6b十进制计数功能。
3)锁存器、译码驱动电路
使用了锁存器,可以稳定显示数据,译码、显示电路可以将频率计数的结果译成能在数码管上显示相对应的阿拉伯数字,便于读取测量的结果,这里采用动态显示。
数码显示板上一共有8个数码管(这里我们用6个),如果按照传统的数码管驱动方式(静态扫描方式),则需要8个七段译码器进行驱动,这样既浪费资源,有时电路工作也不可靠。
所以现在最常见的数码管驱动电路已经不用上述的静态扫描方式了,而是采用动态扫描显示的方式,这种方式可以大大节省资源。
动态数码扫描显示方式是利用了人眼的视觉暂留效应,把八个数码管按一定顺序(从左至右或从右至左)进行点亮,当点亮的频率(即扫描频率)不大时,我们看到的是数码管一个个的点亮,然而,当点亮频率足够大时,我们看到的不再是一个一个的点亮,而是全部同时显示(点亮),与传统方式得到的视觉效果完全一样。
因此我们只要给数码管这样一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可编程 逻辑 器件 EDA 技术 实验 教案