EDA实验.docx
- 文档编号:23593861
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:18
- 大小:244.43KB
EDA实验.docx
《EDA实验.docx》由会员分享,可在线阅读,更多相关《EDA实验.docx(18页珍藏版)》请在冰豆网上搜索。
EDA实验
实验3.4电子设计自动化(EDA)综合实验
(10学时分3次完成:
1次2学时、2次4学时)
一、实验目的
用MAXPLUSⅡ软件设计、编译、仿真和下载数字系统并在高密度可编程逻辑器件中实现,完成具有校对时、分、秒功能的数字电子钟或具有计数功能的数字频率计(选做)。
一、实验思路和实验前准备
要求学生预习《MAX+PLUSⅡ应用入门》及实验指导书EDA综合实验中相关章节,重点掌握动态扫描Display工作原理及数字钟设计构思,熟练使用MAX+PLUSⅡ软件,以另外一种新的思路和方式完成一个具有校时功能的数字电子钟或一个三位半数字频率计(选作)。
1.用可编程逻辑器件(PLD)实现数字钟
为了用PLD实现数字钟基本功能,书中给出了数字钟的详细结构如图3.4.1所示。
图中
虚线框中为EDA实验板上的LED显示电路。
为了减少硬件资源和连线,LED显示一般采用动态扫描显示,由Display模块控制“时分秒”的动态扫描显示,该模块输出的七段编码SEG_A~SEG_F信息控制LED的七段,输出的LED位选信号L1~L6控制6个LED分时显示,将这些信号连到实验板相应插孔即可完成动态扫描显示。
图中虚线框外为电子钟的PLD设计任务,其中时间基准由EDA实验板上555产生的1KHz或石英晶振电路产生的1MHz提供初始信号,经过1次或2次1000分频器CNT1000得到1S基准信号。
CNT60是60进制计数,CNT24是24进制计数,CLK_C是校时控制,Display是动态扫描显示控制模块。
通过以上分析,由PLD实现数字钟的主要设计任务包括:
时间基准和计数器(1000分频器CNT1000、60进制计数器CNT60、24进制计数器CNT24)、具有校时功能的控制模块CLK_C和动态显示扫描模块Display三部分。
因此根据图3.4.1就可以将系统进行分工,同学可以多人合作分别完成单独模块,各模块可以采用原理图方法和硬件描述语言HDL方法实现,大家可以根据模块的具体情况以及自己的喜好选择不同方法实现。
试设计各模块功能,并在实验前利用MAX+PLUSⅡ进行各模块功能仿真,检验其功能是否正确。
有兴趣的同学可以设计多种方案,进行仿真比较,并检查每种方案使用PLD资源的情况,同一功能模块,使用PLD资源越少的设计当然是较好的设计。
图3.4.1数字钟设计原理图
以下分别给出数字钟各模块的电路工作原理分析、部分模块符号及仿真波形,可供参考。
1)时间基准和计数器
利用EDA实验板上提供的1KHz方波经3次10分频得到1秒时间基准信号,作为数字电子钟的时钟信号。
这一模块利用原理图方法构成CNT1000,产生1000分频输出信号。
MAXPLUSⅡ库中有多种计数元件器,本设计选择使用3块74160构成1000分频,74160的引脚排列如图3.4.2,功能如表3.4.1。
74160是同步可预置十进制计数器,异步清0。
电路类似的芯片还有74161(十六进制异步清0)、74162(十进制同步清0)、74163(十六进制同步清0)。
异步清0也叫直接清0。
由此可得到CNT1000的原理如图3.4.3所示。
输出CQ1000是输入CLK的1000分频,作为电子钟计数输入。
q_c是CLK的200分频,作为校表时的时钟。
模块功能可以通过仿真无误后由MAXPLUSⅡ生成模块的符号图,该模块符号如图3.4.4所示,符号图不仅使得该模块的输入和输出更为明确,还可以在系统集成时象上述的74160库元件一样直接使用。
图3.4.3CNT1000原理图
(a)CNT60符号图(b)CNT24符号图
图3.4.5
“时分秒”计数器分别采用24、60进制计数器,方法同CNT1000一样利用原理图方法,可以利用74160清0和置数加上简单的反馈实现,在此只给出模块符号如图3.4.5所示,实现方法不再赘述。
图3.4.6CNT24的仿真结果
图3.4.4CNT1000符号图
在实现每个模块时,要充分使用EDA软件提供的强大的仿真功能,这样可以发现设计中存在的问题,图3.4.6是CNT24仿真结果,由仿真可见CNT24计数功能正常。
保证各模块功能的准确对系统联调也提供了很大的方便。
2)校时控制CLK_C子模块
由图3.3.15所示的校分电路可知,校表电路实际上是在计时信号与“时分秒”计数器之间加一个控制电路,该电路应该有一个控制信号如图中的K,设控制信号无效正常计时;控制信号有效校时。
由图3.3.15可见校时控制是对输入进行简单的逻辑(与、或、非)运算,因此,该模块可以用原理图方法,但如果采用硬件描述语言方法可能会更简单,大家可以比较一下两种方法,以下是采用了ABEL硬件描述语言描述的CLK_C模块,ABEL是一种简单的硬件描述语言,其支持布尔方程、真值表、状态图等逻辑描述,适用于计数器、译码器、运算电路、比较器等逻辑功能的描述。
SUBDESIGNCLK_C
(
MI,SI,CLK,CLK_C,SS,MM,HH,CTRL:
INPUT;
CLKS,CLKM,CLKH:
OUTPUT;
)
BEGIN
CLKS=CTRL&CLK#
!
CTRL&HH&MM&!
SS&CLK_C;
CLKM=CTRL&SI#
!
CTRL&HH&!
MM&SS&CLK_C;
CLKH=CTRL&MI#
!
CTRL&!
HH&MM&SS&CLK_C;
END;
图3.4.7CLK_C模块符号图
程序开始先定义输入和输出变量,关键词BEGIN和END之间描述了模块的操作,其中的符号&、#、!
分别表示与、或、非。
该模块的符号如图3.4.7所示,其中CTRL为校表总控制输入,低电平校表有效,即当CTRL为低电平时,可以进行校表。
HH、MM、SS分别为时、分、秒的校正控制输入(注意:
HH、MM、SS不能同时低电平有效,否则无法校表)。
校表输入信号为CLK_C。
CTRL、HH、MM、SS和CLK_C都可用EDA实验板上的数据开关作为输入。
当CTRL为高电平时数字钟正常计数。
其它3个输入CLK、SI和MI分别为秒、分、时的正常计数时钟,模块的3个输出CLKS、CLKM和CLKH分别接到秒、分、时计数器输入时钟端。
3)动态扫描显示控制Display
数字电子钟采用的是动态扫描显示方式,即利用人眼睛的滞留现象,使各个LED轮流分时显示,适当调节动态扫描时间(比如例子中的CLK),人眼可以看到稳定的多位LED数码“同时”显示。
动态扫描显示方式可以减少硬件资源,降低功耗、减少连线和成本。
从数字电子钟的设计原理图3.4.1可见,显示控制这一模块是最复杂的一个模块。
要显示电子钟的时分秒,那么,该模块Display中必须有七段译码器(如74LS47、74LS48、74LS49、或者用HDL设计)将BCD译为七段码、多路选择器(MUL8_1)分时选择LED等子模块。
七段译码器与多路选择器可以利用MAXPLUSⅡ库中提供的元件,也可以自己设计(如本例的DE4_7及MUL8_1)。
该例为了使大家更好地理解这些元件的功能和熟悉HDL,DE4_7利用ABEL语言实现BCD码到共阴极LED七段码的译码;MUL8_1利用ABEL语言完成八选一功能。
程序分别如下:
DE4_7七段译码器:
subdesignde4_7
(
a,b,c,d:
input;
se_a,se_b,se_c,se_d,se_e,se_f,se_g:
output;
)
begin
table
d,c,b,a=>se_a,se_b,se_c,se_d,se_e,se_f,se_g;
0,0,0,0=>1,1,1,1,1,1,0;
0,0,0,1=>0,1,1,0,0,0,0;
0,0,1,0=>1,1,0,1,1,0,1;
0,0,1,1=>1,1,1,1,0,0,1;
0,1,0,0=>0,1,1,0,0,1,1;
0,1,0,1=>1,0,1,1,0,1,1;
0,1,1,0=>1,0,1,1,1,1,1;
0,1,1,1=>1,1,1,0,0,0,0;
1,0,0,0=>1,1,1,1,1,1,1;
1,0,0,1=>1,1,1,1,0,1,1;
1,0,1,0=>1,1,1,0,1,1,1;
1,0,1,1=>0,0,1,1,1,1,1;
1,1,0,0=>1,0,0,1,1,1,0;
1,1,0,1=>0,1,1,1,1,0,1;
1,1,1,0=>1,0,0,1,1,1,1;
1,1,1,1=>1,0,0,0,1,1,1;
endtable;
end;
八选一多路选择器
subdesignmul8_1
(
d0,d1,d2,d3,d4,d5,d6,d7:
input;
s0,s1,s2:
input;
y:
output;
)
begin
y=!
s2&!
s1&!
s0&d0#
!
s2&!
s1&s0&d1#
!
s2&s1&!
s0&d2#
!
s2&s1&s0&d3#
s2&!
s1&!
s0&d4#
s2&!
s1&s0&d5#
s2&s1&!
s0&d6#
s2&s1&s0&d7;
end;
(a)七段译码DE4_7符号图(b)八选一多路选择器MUL8_1符号图
图3.4.8
MAXPLUSⅡ生成的两个子模块的符号如图3.4.8所示。
了解了两个子模块后,再来简单介绍时分秒动态显示控制Display,它的主要任务是将“时分秒”的计数结果分时地送到各对应的LED动态扫描显示,该模块由原理图方式实现,设计框图如3.4.9所示,结构分为上下两部分,上半部分实际是产生LED位选信号,下半部分产生对应位的七段码。
图3.4.10给出Display模块的原理图,图中S0S1S2为六分频输出,对六个LED进行动态分时控制。
其过程如下:
S0S1S2=000仅LED1(CLK的L1)高电平有效,点亮最右端LED,4个MUL8_1选择秒的个位BCD(4位)送至DE4_7编码器输出段编码。
该LED显示秒的个位。
S0S1S2=001LED2(CLK的L2)高电平有效,4个MUL8_1选择秒的十位BCD(4位)送至DE4_7编码器输出段编码。
S0S1S2=010LED3(CLK的L3)高电平有效,4个MUL8_1选择分的个位BCD(4位)送至DE4_7编码器输出段编码。
S0S1S2=011LED4(CLK的L4)高电平有效,4个MUL8_1选择分的十位BCD(4位)送至DE4_7编码器输出段编码。
S0S1S2=100LED5(CLK的L5)高电平有效,4个MUL8_1选择时的个位BCD(4位)送至DE4_7编码器输出段编码。
S0S1S2=101LED6(CLK的L6)高电平有效,最左端LED点亮,4个MUL8_1选择时的十位BCD(4位)送至DE4_7编码器输出段编码。
图3.4.11Display模块符号图
如此不断循环,则实现了动态的扫描显示。
如果图3.4.10(a)中的CLK信号频率为1KHz,试分析每个输出位选信号LED1~LED6的高电平有效时间(即计数时钟周期)是多少?
6个LED能否很好的动态显示?
动态扫描显示符号如图3.4.11所示。
4)系统集成
所有子模块设计好后,一般使用原理图方法实现系统最终设计,最后得到的数字钟原理图如图3.4.12所示。
对系统子模块进行功能仿真,功能正确后,在EDA实验板上按照数字钟原理图连线并将编程文件下载到PLD器件,进行实测。
如有问题,再对相应模块进行修改编程,直至完全正确显示。
(a)产生LED位选信号
(b)产生七段码
图3.4.10Display模块原理图
以上提供的各模块设计方法并一定是最简介和完善的方案,大家可以先将上述每个模块在MAXPLUSⅡ上输入、编译并仿真其功能,然后研究每个模块,提出不同的或改进的方法。
熟悉了电子钟的PLD设计,大家可以用同样方法练习频率计、抢答器及计价器等的PLD实现。
也可以根据自己需要进行电路设计练习。
图3.4.12数字钟原理图
2.用PLD实现数字频率计(选做)
频率的计量实际上就是在单位(1s)时间内对被测脉冲信号进行计数,所得计数脉冲的个数就是被测信号的频率。
换言之,频率就是周期性信号在单位时间(1s)内变化的次数。
即若在一定时间间隔T内测得这个周期性信号的重复变化次数为N,则其频率可表示为F=N/T。
为了用PLD实现数字频率计的基本功能,书中给出了数字频率计的实验电路原理如图3.4.13所示。
图3.4.13频率计原理图
其工作原理简述如下:
为了能够准确的测量频率,在图3.4.13频率计原理图中采用了1MHz晶体振荡器(在可编程逻辑器件实验板上),经过2次1000分频获得1S闸门时间信号,送入CNT14bite位计数器子模块。
计数时,这个信号通过一个反相器送入DFF14bite位锁存器子模块(锁存器的作用是将计数器在1S内所计得的数进行锁存,使显示器上能稳定地显示此时计数器的值)。
经过2个非门的时延后计数器清零,等待下一次计数。
3位半频率计显示采用动态扫描显示控制Display(其输出低3位LED数码管显示0~9,第四位LED数码管显示0~1,故称3位半),Display工作原理如前面数字钟内容所述,这里不再赘述。
这部分内容是针对学有余力且对这方面知识内容很感兴趣的学生选做而备,可在课时外自己的计算机上练习完成。
三、实验内容和步骤
通过EDA基础实验,我们学习了4种输入方式,根据《MAX+PLUSⅡ应用入门》由浅入深的引导方式,这部分综合实验内容,我们分3次时间完成下边列出的前7个子模块,实现一个数字钟系统。
对既有时间又有兴趣的学生可在课外加做后2个子模块,完成数字频率计系统(选做)。
在完成这些子模块的过程中,我们应该学习如何建立符号文件;如何使用管脚配置文件;如何观测仿真波形;如何进行管脚锁定等方法,以便更好的掌握和应用这些知识。
1.建立符号文件的作用是将设计的子模块打包入库,便于调用。
方法是在原理图或源程序界面下打开file的下拉菜单,选择Createdefaultsymbol建立默认符号,点击编译即可完成。
2.打开层次显示器窗口,可显示编译通过后所产生的诸如rpt、sym、pin、fit等为扩展名的文件,其中*.fit文件很重要,是可编程逻辑器件的管脚配置文件,点击后可看到软件自动配置的管脚,按这些管脚连接好线路后,就可在下载实验板上调试设计系统。
3.要观测仿真波形,首先要建立以*.scf为扩展名的正确的仿真文件名;要观测输出波形,还要学会设置输入信号。
4.管脚锁定就是自定义管脚分配,而不是由软件自动设定,其方法是单击(或激活)输入或输出某信号端,在横向主菜单上找Assign→Pin/Location/Chip项,按界面要求输入相应数据即可完成。
根据实验要求,参照《MAX+PLUSⅡ应用入门》分3次完成如下内容:
1.用文本输入法完成7段数码管译码器(DE4-7)实验步骤:
(1)实验任务:
将4位二进制数译成7段数码管的编码。
(2)实验方案:
根据实验板的特点和资源,7段数码管的译码输出为高电平有效,比较原理图和ABEL语言描述两种方法,宜采用后者。
(3)上机操作:
1)进入MAX+plusII项目管理器,建立名为DE4-7的新项目(File-Project-
Name);
2)输入ABEL语言程序(File-New)(略);
3)保存文件(File-Saveas);
4)创建符号(File-CreateDefaultSymbol);
5)指定芯片(Assign-Device-MAX7000S-EPM7128SLC84一15);
6)编译项目(MAX+plusⅡ-Compiler-Start);
7)查看引脚配置(MAX+plusⅡ--Hierarchy-Display-fit);
8)完成连线顺次将输入A、B、C、D接数据开关,输出SE-A~SE-G引脚连接到7段数码管的段选插孔上,即可观测逻辑功能。
2.用文本输入法完成8选1多路选择器(MUL8-1)实验步骤:
(1)实验任务:
实现一个8选1多路选择器。
(2)实验方案:
用ABEL语言描述。
(3)上机操作:
1)进入MAX+plusII项目管理器,建立名为MUL8-1的新项目(File-Project-
Name);
2)~6)操作方式同DE4–7子模块。
3.用原理图输入法完成计数器(CNT1000)实验步骤:
(1)实验任务:
实现一个1000进制计数器。
(2)实验方案:
根据实验板的特点和资源,利用实验板上的1KHz信号作为计数器时钟信号。
(3)上机操作:
1)进入MAX+plusII项目管理器,建立名为CNT1000的子项目(File-Project-Name);
2)输入原理图(File-New);
3)保存文件(File-Saveas);
4)创建符号(File-CreateDefaultSymbol);
5)指定芯片(Assign-.Device-MAX7000S-EPM7128SLC84一15);
6)编译项目(MAX+plusⅡ-Compiler-Start)。
4.用原理图输入法完成动态数码显示(DISPLAY)实验步骤:
(1)实验任务:
实现一个动态扫描显示六位数码的工程项目。
(2)实验方案:
根据实验板的特点和资源,利用实验板上的1KHz信号作为动态数码显示的时钟信号。
(3)上机操作:
1)进入MAX+plusⅡ项目管理器,建立名为DISPLAY的新项目(File-Project-Name):
2)输入原理图(File-New);(在做这个复杂的电路图中,注意给连线定义名称)
3)保存文件(File-Saveas);
4)创建符号(File-CreateDefaultSymbol);
5)指定芯片(Assign-.Device-MAX7000S-EPM7128SLC84一15);
6)编译项目(MAX+plusⅡ-Compiler-Start)。
5.用原理图输入法完成计数器(CNT60)实验步骤:
(1)实验任务:
实现一个60进制计数器。
(2)上机操作:
1)进入MAX+plusII项目管理器,建立名为CNT60的子项目(File-Project-Name);
2)输人原理图(File-New);
3)保存文件(File-Saveas);
4)创建符号(File-CreateDefaultSymbol);
5)指定芯片(Assign-.Device-MAX7000S-EPM7128SLC84一15);
6)编译项目(MAX+plusⅡCompiler-Start)。
7)观测仿真波形(File-New-scf)
6.用原理图输入法完成计数器(CNT24)实验步骤:
(1)实验任务:
实现一个24进制计数器。
(2)上机操作:
1)进入MAX+plusII项目管理器,建立名为CNT24的子项目(File-Project-Name);
2)~7)操作方式同CNT60子模块。
7.用文本输入法完成校时控制逻辑电路(CLK-C)实验步骤:
(1)实验任务:
实现一个校时控制逻辑电路。
(2)实验方案:
用ABEL语言描述。
(3)上机操作:
1)进入MAX+plusII项目管理器,建立名为CLK-C的子项目(File-Project-
Name);
2)~6)操作方式同DE4–7子模块。
完成数字电子钟(CLK)实验步骤:
(1)实验任务:
完成一个数字电子钟,具有走表、校时功能。
(2)实验方案:
根据实验板的特点和资源情况,利用实验板上的1KHz信号作为动态数码显示的时钟信号。
该项目由CNT1000分频、CNT60进制计数器、CNT24进制计数器、CLK_C校时控制逻辑、DISPLAY数码管动态扫描电路等五部分构成。
(3)上机操作:
1)进入MAX+plusII项目管理器,建立名为CLK的新项目(File—Project-Name);
2)输人原理图(File-New);
3)保存文件(File-Saveas);
4)指定芯片(Assign-.Device-MAX7000S-EPM7128SLC84一15);
5)引脚锁定(单击输入或输出Assign→Pin/Location/Chip→引脚号);
6)编译CLK项目(MAX+plusU-Compiler-Start);
7)查看引脚配置(MAX+plusⅡ--Hierarchy-Display-fit);
8)完成连线,检查实验板及连线是否正确,无误后通电;
9)下载编程(MAX+plusU-;Programmer-Program);
10)观察实验结果,如有问题,分析解决,直至正确显示数字钟系统功能。
参照上述实验步骤,完成如下子模块项目:
1.用原理图输入法完成DFF14bite位锁存器。
2.用原理图输入法完成CNT14bite位计数器。
3.用原理图输入法完成计数器(CNT1000),
4.用原理图输入法完成动态数码显示(DISPLAY),
完成数字频率计(FREQ)实验步骤:
(1)实验任务:
完成一个3位半数字频率计(选做)。
(2)实验方案:
根据实验板的特点和资源,使用实验板上1MHz晶振经分频后做秒闸门时间信号。
该项目由CNTl4bite位计数器,DFFl4bite位锁存器,CNT1000分频和DISPLAY数码管动态扫描电路等四部分构成。
其中CNT1000,DISPLAY已分别在数字钟项目中完成。
(3)上机操作:
参照数字电子钟(CLK)实验步骤。
四、实验验收
学生实验完成后请指导教师验收,查看仿真波形、演示实验结果,并回答指导教师提出的问题。
根据所完成项目能正确编译、仿真和下载到可编程逻辑器件中,实现所设计的系统功能,正确显示实验结果,评定验收成绩。
五、实验设备
计算机、MaxplusⅡ软件、可编程逻辑器件实验板
PLD器件:
EPM7128SLC84—15
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 实验