实验报告1101170136王振阳
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京理工大学
可编程逻辑器件实验报告
姓名: 王振阳学号:1101170136
学院(系):机械工程学院
专业: 测控技术与仪器
指导者:
评阅者:
2014 年 3 月
实验一 MAX+plusⅡ开发工具使用
1 实验内容
通过实验掌握对MAX+plusⅡ开发工具使用,使用AHDL语言设计逻辑运算电路:七段译码器。
2 实验目的
学习利用MAX+plus II 进行可编程逻辑器件电路设计的过程,包括输入、编译和仿真等,熟悉开发板各接口及LED显示。
3 实验要求
上机操作,通过简单的实例,学会使用MAX+plus II的文本编辑器及进行电路设计以仿真验证的方法,能够将程序下载到开发板观察现象。
4 实验仪器
安装了MAX+plus II 的PC机一台及开发板一套。
5 实验步骤
1) 打开max+plus II软件,新建一个tdf文件,命名为qiduanyima_led,用AHDL语言编写七段译码器程序如下:
SUBDESIGN qiduanyima_led
(
D[3..0] : INPUT ;
S[6..0],c : OUTPUT;
)
BEGIN
c=vcc;
TABLE
D[3..0] => S0,S1,S2,S3,S4,S5,S6;
H"0" => 1, 1, 1, 1, 1, 1, 0;
H"1" => 0, 1, 1, 0, 0, 0, 0;
H"2" => 1, 1, 0, 1, 1, 0, 1;
H"3" => 1, 1, 1, 1, 0, 0, 1;
H"4" => 0, 1, 1, 0, 0, 1, 1;
H"5" => 1, 0, 1, 1, 0, 1, 1;
H"6" => 1, 0, 1, 1, 1, 1, 0;
H"7" => 1, 1, 1, 0, 0, 0, 0;
H"8" => 1, 1, 1, 1, 1, 1, 1;
H"9" => 1, 1, 1, 1, 0, 1, 1;
END TABLE;
END;
编译后没有错误,并生成inc文件。
2)管脚分配。首先点击assign》device,选择芯片型号为7128slc84-6;点击进入管脚分配页面,点击载入节点,拖动节点至相应的管脚,其具体对应如下:
c 75(LED5上电)
(对应至芯片译码器)
S0->9
S1->8
S2->4
S3->5
S4->6
S5->10
S6->11
(芯片开关K0~K3对应输入D0~D3)
D0->33
D1->34
D2->35
D3->36
保存并编译,没有错误后生成pof文件。
3)打开pof2jed软件,将MAX+PLUS II生成的pof文件,加载到pof2jed对话框中,点击run,生成jed文件。
4)打开ISP软件,将转换好的jed文件,下载到EPM 7128SCL84-6型实验板上。新建chn文件,File→New→点击OK;
设置JTAG:Program/Verify;Cable types:ByteBlaster;
加载jed文件,点击OK,保存并烧入芯片。
实验现象:拨动开关K0~K3,LED5上显示相应的数字。
实验问题:改变开关时其他LED也显示相同数字,可能芯片LED模块存在问题。
改进:可在译码器程序中给其他LED以变量,并在译码中赋为低电平
实验二组合电路模块设计
1 实验内容
设计七段译码器(BCD码译为共阳极七段码)、算术运算电路(三位二进制乘法,乘数初始置7,乘数利用拨动开关K1、K2、K3进行置入,结果在LED上显示),并将设计好的电路下载到实验仪的芯片中,进行实物仿真。
2 实验目的
通过实验,学会组合电路模块的图形编辑和文本编辑的设计方法,掌握电路下载、实物仿真方法。
3 实验要求
通过实例操作,学会使用MAX+plusII的文本编辑、图形编辑进行基本组合电路电路设计、仿真的方法。
4 实验仪器
安装了MAX+plus II 的PC机一台及开发板一套。
5 实验步骤
分析:1)程序由译码器和乘法器两个模块组成。
2)要求是乘数初始置7,在乘法器程序段中可用一个数组变量作为初始乘数并赋为7,开关K1,K2,K3作为另一个乘数输入。
3)由于是三位二进制乘法,十进制结果最多是49(7*7)。
4)由于EPM 7128SCL84-6型实验板的5个LED是共用唯一一个译码器的,实验中只用一个LED,来显示计算结果的个位。
实验步骤:
1)打开max+plus II软件,新建一个tdf文件,命名为qiduanyima_led,用AHDL语言编写七
段译码器程序如下:
INCLUDE "hadd_t.inc"; //半加器
INCLUDE "fadd_t.inc"; //全加器
SUBDESIGN mul3_3t
(
a[2..0]: INPUT ;
m[5..0],t1[3..0],t2[3..0],s1[6..0],c1 : OUTPUT;
)
V ARIABLE //用数组变量初始乘数b[2..0]:NODE;
n0,n1,n2,n3,n4,n5,n6,n7,n8 : NODE;
h1,h2,h3 : hadd_t;
f1,f2,f3 : fadd_t;
BEGIN
//三乘三程序
b[]=7;
c1=vcc;
n0=a0&b0; n1=a0&b1; n2=a1&b0;
n3=a1&b1; n4=a2&b0; n5=a0&b2;
n6=a2&b1; n7=a1&b2; n8=a2&b2;
h1.a=n1; h1.b=n2;
f1.ci=n3; f1.a=n4; f1.b=n5;
f2.ci=f1.co; f2.a=n6; f2.b=n7;
h2.a=h1.c; h2.b=f1.s;
h3.a=h2.c; h3.b=f2.s;
f3.ci=h3.c; f3.a=f2.co; f3.b=n8;
m0=n0;m1=h1.s;m2=h2.s;
m3=h3.s;m4=f3.s;m5=f3.co;
t1[3..0]=m[3..0];
t2[1..0]=m[5..4];
t2[2]=gnd;t2[3]=gnD;
//译码程序
TABLE
t1[3..0] => S10,S11,S12,S13,S14,S15,S16;
H"0" => 1, 1, 1, 1, 1,1, 0;
H"1" => 0, 1, 1, 0, 0, 0, 0;
H"2" => 1, 1, 0, 1, 1, 0, 1;
H"3" => 1, 1, 1, 1, 0, 0, 1;
H"4" => 0, 1, 1, 0, 0, 1, 1;