《EDA技术及应用》实验指导书原.docx
《《EDA技术及应用》实验指导书原.docx》由会员分享,可在线阅读,更多相关《《EDA技术及应用》实验指导书原.docx(50页珍藏版)》请在冰点文库上搜索。
《EDA技术及应用》实验指导书原
实验一组合逻辑器件设计
一、实验目的
1、通过一个简单的3-8译码器的设计,掌握组合逻辑电路的设计方法。
2、掌握组合逻辑电路的静态测试方法。
3、初步了解MAXPLUSII原理图输入设计的全过程。
二、实验主要仪器与设备
1、输入:
DIP拨码开关3位。
2、输出:
LED灯。
3、主芯片:
EP1K10TC100-3。
三、实验内容及原理
三-八译码器即三输入,八输出。
输出与输入之间的对应关系如表1-1-1所示。
表1-1-1三-八译码器真值表
输入
输出
A2
A1
A0
Y7
Y6
Y5
Y4
Y3
Y2
Y1
Y0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
1
0
0
0
1
1
0
0
0
0
1
0
0
0
1
0
0
0
0
0
1
0
0
0
0
1
0
1
0
0
1
0
0
0
0
0
1
1
0
1
0
0
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
四、预习要求
做实验前必须认真复习数字电路中组合逻辑电路设计的相关内容(编码器、译码器)。
五、实验步骤
(一)建立工程目录
建立一个工程目录的主要目的是为了便于管理在系统编译、综合的过程中产生的许多临时文件和附属文件。
例如建立工程目录E:
\TEST1\来存放这个工程所生成的所有文件。
通过系统的“开始”菜单进入MAX+plusII集成环境。
如图1-1-1所示:
图1-1-1
(二)建立一个新文件
在图1-1-1点击“File\New”出现如图1-1-2所示的对话框。
图1-1-2
选中GrapicEditorFile,进入原理图设计输入电路编辑状态,如图1-1-3所示。
图1-1-3
1、放置一个器件在原理图上。
<1>在原理图的空白处双击鼠标左键,出现图1-1-4。
图1-1-4
<2>在光标处输入元件名称或用鼠标点击元件,按下OK即可。
<3>如果安放相同元件,只要按住CTRL键,同时用鼠标拖动该元件。
<4>图1-1-5为元件安放结果。
图1-1-4
2、添加连线到器件的管脚上。
图1-1-5
把鼠标移到引脚附近,则鼠标光标自动由箭头变位十字,按住鼠标左键拖动,即可画出连线。
如图1-1-6示。
图1-1-6
3、保存原理图
单击保存按扭,选择工程目录,合适名称保存。
本实验取名test1.gdf。
(三)选取芯片型号
点击Assign\Device菜单,出现图1-1-7对话框,依据设计要求选择
器件。
(本实验一律选用EP1K10TC100-3)
图1-1-7
图中的下方有一个“ShowOnlyFastestSpeedGrades”选项,如果有“Device”选项中没有你需要的芯片,可以选取这个选项,这样就会出现所有的芯片的选择项目。
(四)对文件进行编译
点击“File\Project\SetProjecttoCurrentFile”选项,设置为当前文件。
启动MAX+PLUSII\COMPILER菜单,按START开始编译,并显示编译结果,生成.sof,.pof文件,以备硬件下载和编程时调用。
同时生成.rpt文件,可详细查看编译结果。
如图1-1-8。
图1-1-8
(五)管脚的重新分配,定位
启动MAX+PLUSII\FloorplanEditor菜单命令,出现如图1-1-9所示的画面:
图1-1-9
FloorplanEditor显示该设计项目的管脚分配。
这是由软件自动分配的。
用户可随意改变管脚分配。
管脚编辑过程如下:
<1>按下
,所有输入、输出口都会出现在UnassignedNodes栏框内。
<2>用鼠标按住某输入/输出口名称,并拖到下面芯片的某一管脚上,松开鼠标左键,便完成一个管脚的分配。
注意:
芯片上有一些特定功能管脚,进行管脚编辑时一定要注意。
另外,在芯片选择中,如果选Auto,则不允许对管脚进行再分配。
管脚分配之后,要再编译一次,将管脚分配信息加入下载文件中。
(六)电路板上的连线
根据管脚分配图,将EP1K10TC100-3的输入输出管脚与实验箱的各器件相连。
(七)器件的下载编程
<1>启动Max+plusII\Programmer菜单。
<2>选择JTAG\Multi-DeviceJTAGChain菜单项。
<3>启动JTAG\Multi-DeviceJTAGChainSetup…菜单项。
<4>点击SelectprogrammimgFile…按扭,选择要下载的.sof文件。
然后按Add加到文件列表中。
<5>如果不能正确下载,可点击DetectJTAGChainInfoan按扭进行测试,查找原因。
最后按OK退出。
<6>按configure按扭完成下载。
六、实验连线
用拨码开关的低三位代表译码器的输入(A,B,C),将之与EP1K10TC100-3的管脚相连;用LED灯来表示译码器的输出(D0~D7),将之与EP1K10TC100-3芯片的管脚相连。
拨动拨档开关,可以观察发光二极管与输入状态的对应关系同真值表中所描述的情况是一致的。
七、实验报告与思考题
1、详细论述实验步骤,描述实验结果。
2、在输入端加入使能端后应如何设计。
3、设计与T1138功能类似的数据分配器。
附:
用硬件描述语言完成译码器的设计:
(1)生成设计项目文件。
(2)启动File\New菜单命令,如图1-1-10:
图1-1-10
(3)选择TextEditorfile,点击OK。
(4)键入程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYT2IS
PORT(
A:
INSTD_LOGIC_VECTOR(2DOWNTO0);
Y:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDT2;
ARCHITECTUREAOFT2IS
BEGIN
WITHASELECT
Y<="00000001"WHEN"000",
"00000010"WHEN"001",
"00000100"WHEN"010",
"00001000"WHEN"011",
"00010000"WHEN"100",
"00100000"WHEN"101",
"01000000"WHEN"110",
"10000000"WHENOTHERS;
ENDA;
(5)存成.vhd文件(注意文件名要与实体名一致),然后进行编译即可。
其他都与原理图输入相同。
实验二组合电路设计
一、实验目的
1、掌握组合逻辑电路的设计方法。
2、掌握组合逻辑电路的静态测试方法。
3、加深FPGA设计的过程,并比较原理图输入和文本输入的优劣。
二、实验主要仪器与设备
1、输入:
按键开关(常高)4个;拨码开关4位。
2、输出:
LED灯。
4、主芯片:
EP1K10TC100-3。
三、实验内容及原理
1、四舍五入判别电路,其输入为8421BCD码,要求当输入大于或等于5
时,判别电路输出为1,反之为0。
原理图如图1-2-1。
图1-2-1
2、
设计四个开关控制一盏灯的逻辑电路,要求合任一开关,灯亮;断任
一开关,灯灭。
原理图如图1-2-2。
图1-2-2
3、设计一个优先权排队电路,排队顺序:
A=1为最高优先级;B=1为次高优先级;C=1为最低优先级。
要求输出端最高只能有一端为“1”,即只能是优先级较高的输入端所对应的输出端为“1”。
原理图如图
1-2-3所示。
4、1-2-3。
图1-2-3
四、预习要求
做实验前必须认真复习数字电路中组合逻辑电路设计的有关内容(组合电路的设计方法、加法器的设计、三人表决器的设计等)。
五、实验步骤
三个实验项目的实验步骤均同实验一。
六、实验连线
1、输入信号D3,D2,D1,D0对应的管脚接四个拨码开关;输出信号OUT对应的管脚接LED灯。
2、输入信号K1,K2,K3,K4对应的管脚接四个按键开关;输出信号OUT对应的管脚接LED灯。
拨动按键开关,当按下奇数个按键时,灯亮;当按下偶数个按键时,灯灭。
3、输入信号A、B、C对应的管脚连三个按键开关;输出信号A-OUT,B-OUT,C-OUT对应的管脚分别连三个LED灯。
拨动拨码开关或者按下按键开关,观察LED灯,与实验内容是否相符。
七、实验报告与思考题
1、写出实验步骤和实验结果。
2、写对于两种硬件设计输入法的比较。
附:
用硬件描述语言(VHDL)完成3个实验项目的设计:
(1)
LibraryIEEE;
UseIEEE.std_logic_1164.all;
Entityt2_1is
port(D:
Instd_logic_vector(3downto0);
Y:
Outstd_logic);
endt2_1;
Architecturestructoft2_1is
begin
process(D)
begin
if(D>="0101"andD<="1001")then
Y<='1';
elsifD<="0101"then
Y<='0';
else
Y<='Z';
endif;
endprocess;
end;
(2)
LibraryIEEE;
UseIEEE.std_logic_1164.all;
Entityt2_2is
port(D:
Instd_logic_vector(3downto0);
Y:
Outstd_logic);
endt2_2;
Architecturestructoft2_2is
begin
process(D)
begin
caseDis
when"0000"=>Y<='0';
when"0001"=>Y<='1';
when"0011"=>Y<='0';
when"0010"=>Y<='1';
when"0110"=>Y<='0';
when"0111"=>Y<='1';
when"0101"=>Y<='0';
when"0100"=>Y<='1';
when"1100"=>Y<='0';
when"1101"=>Y<='1';
when"1111"=>Y<='0';
when"1110"=>Y<='1';
when"1010"=>Y<='0';
when"1011"=>Y<='1';
when"1001"=>Y<='0';
when"1000"=>Y<='1';
whenothers=>Y<='Z';
endcase;
endprocess;
end;
(3)
LibraryIEEE;
UseIEEE.std_logic_1164.all;
Entityt2_3is
port(A,B,C:
Instd_logic;
Y:
Outstd_logic_vector(2downto0));
endt2_3;
Architecturestructoft2_3is
begin
process(A,B,C)
begin
ifA='1'then
Y<="100";
elsifB='1'then
Y<="010";
elsifC='1'then
Y<="001";
elseY<="000";
endif;
endprocess;
end;
实验三触发器功能模拟
一、实验目的
1、掌握触发器功能的测试方法。
2、掌握基本RS触发器的组成及工作原理。
3、掌握集成JK触发器和逻辑功能及触发方式。
4、掌握几种主要触发器之间相互转换的方法。
5、通过实验,体会FPGA芯片的高集成度和多I/O口。
二、实验主要仪器与设备
1、输入:
按键开关(常高);拨码开关;时钟源。
2、输出:
LED灯。
5、主芯片:
EP1K10TC100-3。
三、实验内容及原理
图1-2-2
图1-3-1
将基本RS触发器,同步RS触发器,集成J-K触发器,D触发器同时集成在一个CPLD芯片中模拟其功能,并研究其相互转化的方法。
四、预习要求
做实验前必须认真复习数字电路中触发器的相关内容,基本RS触发器,同步RS触发器,J-K触发器,D触发器,T触发器的电路结构及工作原理。
五、实验步骤
1、利用原理图设计输入法画图1-3-1。
2、选择芯片ACEX1KEP1K10TC100-3。
3、编译仿真。
4、管脚分配,并再次编译。
5、实验连线。
6、下载编程,观察实验结果。
六、实验连线
输入信号Sd,Rd对应的管脚接按键开关,CLK接时钟源(频率<0.5Hz):
输入信号J,K,D,R,S对应的管脚分别接拨码开关;输出信号QRS,NQRS,QRSC,NQRSC,QJK,NQJK,QD,NQD对应管脚分别接LED灯。
另外准备几根连接线,在改变为T“触发”器时,短接相应管脚,或连接“0”“1”电平。
七、实验报告与思考题
1、写出实验步骤。
2、写出实验结果。
填下述表一,表二,表三,表四。
表一RS寄存器
Rd
Sd
Q
NQ
说明
0
1
1
0
1
1
0
0
表二RS锁存器
R
S
CLK
Rd
Sd
说明
X
X
X
1
0
X
X
X
0
1
X
X
X
0
0
X
X
0
1
1
0
0
1
1
1
0
1
1
1
1
1
0
1
1
1
1
1
1
1
1
表三JK触发器
J
K
CLK
Rd
Sd
X
X
X
0
1
X
X
X
1
0
X
X
X
0
0
X
X
0
1
1
X
X
1
1
1
0
0
※
1
1
0
1
※
1
1
1
0
↓
1
1
1
1
↓
1
1
表四D触发器
INPUT
OUTPUT
D
CLK
Rd
Sd
Q
NQ
X
X
0
1
X
X
1
0
X
X
0
0
X
0
1
1
X
1
1
1
0
↑
1
1
1
↑
1
1
3、分别将JK触发器和D触发器接成T触发器,模拟其工作状态,并画出其波形。
实验四扫描显示电路设计
一、实验目的
了解教学系统中8位七段数码管显示模块的工作原理,设计标准扫描驱动电路模块,以备后面实验调用。
二、实验主要仪器与设备
1、输入:
时钟源,四位拨码开关。
2、输出:
八位七段数码显示管。
3、主芯片:
EP1K10TC100-3。
三、实验内容及原理
四位拨码开关提供8421BCD码,经译码电路后成为7段数码管的字形显示驱动信号。
(A…G)扫描电路通过可调时钟输出片选地址SEL[2..0]。
由SEL[2..0]和A..G决定了8位中的哪一位显示和显示什么字形。
SEL[2..0]变化的快慢决定了扫描频率的快慢。
1、用拨码开关产生8421BCD码,用FPGA产生字形编码电路和扫描驱动电路,然后进行仿真,观察波形,正确后进行设计实现,适配化分。
调节时钟频率,感受“扫描”的过程,并观察字符亮度和显示刷新的效果。
参考电路(时钟频率>40HZ,如图1-4-1)
图1-4-1
2、编一个简单的从0~F轮换显示十六进制的电路。
参考电路(时钟频率<2HZ,如图1-4-2)
图1-4-2
四、预习要求
做实验前必须认真复习数字电路中计数器的实现方法,74161的构成及功能,七段显示译码器的实现,以及VHDL编程等相关内容。
五、实验步骤
1、编写DELED模块的VHDL代码。
2、利用原理图设计输入法画图1-4-1和图1-4-2。
3、选择芯片ACEX1KEP1K10TC100-3。
4、编译仿真。
5、管脚分配,并再次编译。
6、实验连线。
7、下载编程,观察实验结果。
六、实验连线
输入信号:
D3,D2,D1,D0所对应的管脚同四位拨码开关相连;清零信号RESET所对应的管脚同按键开关相连;时钟CLK所对应的管脚同实验箱上的时钟源相连;
输出信号:
代表扫描片选地址信号SEL2,SEL1,SEL0的管脚同四位扫描驱动地址的低3位相连,最高位地址接“0”(也可悬空);代表7段字码驱动信号A,B,C,D,E,F,G的管脚分别同扫描数码管的段输入a,b,c,d,e,f,g相连。
观察数码管所显示的数字与输入之间的关系。
七、实验报告与思考题
1、写出实验步骤和实验结果。
2、字形编码的种类,即一个7段数码管可产生多少种字符,产生所有字符需多少根被译码信号线?
3、字符显示亮度同扫描频率的关系,且让人眼感觉不出光烁现象的最低扫描频率是多少?
附:
模块DELED的源代码:
LIBRARYieee;
USEieee.std_logic_1164.ALL;
ENTITYdeledIS
PORT(
a:
INSTD_LOGIC_VECTOR(3DOWNTO0);
y:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDdeled;
ARCHITECTUREaOFdeledIS
BEGIN
withaselect
y<="0111111"when"0000",
"0000110"when"0001",
"1011011"when"0010",
"1001111"when"0011",
"1100110"when"0100",
"1101101"when"0101",
"1111101"when"0110",
"0000111"when"0111",
"1111111"when"1000",
"1101111"when"1001",
"1110111"when"1010",
"1111100"when"1011",
"0111001"when"1100",
"1011110"when"1101",
"1111001"when"1110",
"1110001"when"1111",
"0000000"whenothers;
ENDa;
实验五计数器及时序电路设计
(一)
一、实验目的
1、掌握时序电路的经典设计方法(D触发器和JK触发器和一般逻辑门组成的时序逻辑电路)。
2、掌握通用同步计数器,异步计数器的设计方法。
3、了解用同步计数器通过清零法和置数法得到循环任意进制计数器的方法。
二、实验主要仪器与设备
1、输入:
时钟源。
2、输出:
四位七段数码显示管。
3、主芯片:
EP1K10TC100-3。
三、实验内容及原理
1、用D触发器设计异步四位二进制加法计数器。
原理图如图1-5-1所示。
图1-5-1
2、用JK触发器设计异步二—十进制减法计数器。
原理图如图1-5-2所示。
图1-5-2
3、
用74LS161两个宏连接成八位二进制同步计数器。
原理图如图1-5-3所示。
图1-5-3
四、预习要求
做实验前必须认真复习数字电路中计数器的实现方法,74161的构成及功能,七段显示译码器的实现,以及硬件描述语言编程等相关内容。
五、实验步骤
1、编写DELED模块的VHDL代码。
(图1-5-3中还有SH0-4模块)
2、利用原理图设计输入法画图1-5-1、图1-5-2和图1-5-3。
3、选择芯片ACEX1KEP1K10TC100-3。
4、编译仿真。
5、管脚分配,并再次编译。
6、实验连线。
7、下载编程,观察实验结果。
六、实验连线
输入信号:
清零信号RESET所对应的管脚同按键开关相连;计数时钟CLK、扫描时钟CKDSP所对应的管脚同实验箱上的时钟源相连(计数时钟频率CKCNT<4Hz,扫描时钟频率CKDSP>40Hz);
输出信号:
代表扫描片选地址信号SEL2,SEL1,SEL0的管脚同四位扫描驱动地址的低3位相连,最高位地址接“0”(也可悬空);代表7段字码驱动信号A,B,C,D,E,F,G的管脚分别同扫描数码管的段输入a,b,c,d,e,f,g相连。
七、实验报告与思考题
1、写出实验步骤和实验结果。
2、说明在FPGA设计中,同步设计和异步设计的不同之处。
3、分析74161构成同步计数器的实现过程。
4、扫描数据切换模块的代码实现。
附:
模块sh8_4的源代码
LIBRARYieee;
USEieee.std_logic_1164.ALL;
ENTITYsh8_4IS
PORT(
sel:
INSTD_LOGIC;
da:
INSTD_LOGIC_VECTOR(7DOWNTO0);
q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDsh8_4;
ARCHITECTUREaOFdeledIS
BEGIN
Ifsel=’0’Then
q<=da(3DOWNTO0);
Else
q<=da(7DOWNTO4);
Endif;
ENDa;
实验六计数器及时序电路设计
(二)
一、实验目的
1、理解时序电路和同步计数器加译码电路的联系,设计任意编码计数器。
2、了解同步芯片和异步芯片的区别。
二、实验主要仪器与设备
1、输入:
时钟源。
2、输出:
四位七段数码显示管。
3、主芯片:
EP1K10TC100-3。
三、实验内容及原理
1、用74LS390两个宏连接成八位二—十进制异步计数器。
两位数码管同时顺序显示十进制00~99。
原理图如图1-6-1所示。
图1-6-1
2、用74LS161清零和置数法组成六进制和十二进制计数器。
原理图如图1-6-2所示。
计数时钟频率CKCNT<0.5HZ,扫描时钟频率CKDSP>40HZ;清零法分别完成0~4、0~B的顺序计数;置位法分别完成3~9、3~F的顺序计数;用八位数码管显示四个计数状态。
图1-6-2
3、分别用D触发器