数字电路与逻辑实验指导书Quartus.docx
《数字电路与逻辑实验指导书Quartus.docx》由会员分享,可在线阅读,更多相关《数字电路与逻辑实验指导书Quartus.docx(27页珍藏版)》请在冰豆网上搜索。
![数字电路与逻辑实验指导书Quartus.docx](https://file1.bdocx.com/fileroot1/2023-2/3/92beb828-5bb9-4336-9fca-e74971baecd8/92beb828-5bb9-4336-9fca-e74971baecd81.gif)
数字电路与逻辑实验指导书Quartus
数字电路及逻辑
实验指导书
计算机科学与技术学院
实验教学中心
第一章实验平台简介
1.1LP-2900逻辑设计实验平台
1.2逻辑门
第二章QuartusII开发软件的使用
2.1基于QuartusII的设计输入
2.2基于QuartusII的平面编辑
2.3基于QuartusII的模拟仿真
2.4基于QuartusII的编程下载
第三章数字电路及逻辑实验
3.0一位半加器设计
3.1译码器的设计
3.2数据比较器的设计
3.3同步计数器的设计
3.4分频(除频)器的设计
3.5移位寄存器的设计
3.6数字显示电路的设计
第一章实验平台简介
1.1LP-2900逻辑设计实验平台
LP-2990逻辑设计实验平台由CPLD晶片板、I/O元件实验板、PC下载界面电路和电源四部分组成。
1.CPLD晶片板
在CPLD晶片板上,有一片Altera10K系列晶片,AlteraEPF10K10TC144-4CPLD,该晶片提供不断重新下载新电路的弹性与便利。
2.I/O元件实验板
在I/O元件实验板上,有12种I/O元件:
4组红绿黄LED;6个共阴极七段显示器;一个蜂鸣器;两个电子骰子;一个时序电路;3组8位开关;4个脉冲按键;一个4x3键盘;一块8x8点矩阵LED显示器;一个液晶显示器;A/D与D/A电路组件;8051单片机模组。
这些I/O元件,提供了调试逻辑电路必要的环境。
为了便于实验,给出LP-2900的部分I/O元件的脚位:
4组红绿黄LED
代号
L1
L2
L3
L4
L5
L6
L7
L8
装置
红LED
黄LED
绿LED
红LED
黄LED
绿LED
红LED
黄LED
脚位
Pin7
Pin8
Pin9
Pin10
Pin11
Pin12
Pin13
Pin14
代号
L9
L10
L11
L12
LED_COM
装置
绿LED
红LED
黄LED
绿LED
LED1---LED12的共阴点
脚位
Pin17
Pin18
Pin19
Pin20
Pin141
6个共阴极七段显示器
代号
a
b
c
d
e
f
g
dp
脚位
Pin23
Pin26
Pin27
Pin28
Pin29
Pin30
Pin31
Pin32
代号
DE1
DE2
DE3
脚位
Pin33
Pin36
Pin37
DE1、DE2、DE3为译码器(74LS138)的输入端,译码器(74LS138)输出端Y0---Y5为C1---C6,C1---C6分别为6个显示器阴极共点端。
4x3键盘
代号
DE1
DE2
DE3
RK1
RK2
RK3
脚位
Pin33
Pin36
Pin37
Pin42
Pin43
Pin44
RK1RK2RK3为键盘列输出。
DE1、DE2、DE3为译码器(74LS138)的输入端,译码器(74LS138)输出端Y0---Y3为C1---C4,C1---C4分别为键盘的扫描输出。
3组8位开关
代号
Sw1
Sw2
Sw3
Sw4
Sw5
Sw6
Sw7
Sw8
脚位
Pin47
Pin48
Pin49
Pin51
Pin59
Pin60
Pin62
Pin63
代号
Sw9
Sw10
Sw11
Sw12
Sw13
Sw14
Sw15
Sw16
脚位
Pin64
Pin65
Pin67
Pin68
Pin69
Pin70
Pin72
Pin73
代号
Sw17
Sw18
Sw19
Sw20
Sw21
Sw22
Sw23
Sw24
脚位
Pin78
Pin79
Pin80
Pin81
Pin82
Pin83
Pin86
Pin87
蜂鸣器
代号
Sp1
脚位
Pin46
时序电路
代号
SOC
脚位
Pin55(10MHZ)
3.PC下载界面电路
PC与LP2900的通信电路。
1.2逻辑门
为了便于在图形方式下选取逻辑器件和在文本方式下使用门原语设计逻辑电路,下面给出部分逻辑门符号以供使用。
(1)图形方式逻辑门名称
and2两输入端与门andii输入端与门
or2两输入端或门(i=28)
nand2两输入端与非门
nor2两输入端或非门
not非门
xor异或门
xnor同或门
tri三态门
(2)门原语设计使用逻辑符号
and与如:
一位半加器
nand与非modulefadd(s,c,a,b);//端口列表
or或inputa,b;//输入
nor或非outputs,c;//输出
not非xor(s,a,b);//s=a异或b
xor异或and(c,a,b);//c=a与b
xnor同或andmodule
第二章QuartusII开发软件的使用
2.1基于QuartusII的设计输入
1.点击桌面图标QuartusII或开始菜单程序的Altera程序项。
2.电路输入(图形方式)
(1)新建工程:
ProjectWizard。
在E盘创建工程。
(2)新建文件:
>DesignFiles>BlockDiagram/schematic,出现图形编辑窗口。
(3)电路输入:
在图形编辑窗口点击鼠标右键>Insert>Symbol>输入电路符号。
(4)电路连接:
使用窗口左侧的绘图工具连接电路。
(5)管角命名:
鼠标移动到管角名称处>双击鼠标>输入管角名。
(6)保存文件名:
As。
生成的文件扩展名为.bdf,并自动添加到工程。
(7)编译工程:
Progressing>StartCompilation。
或者在工具栏中选项编译工具按钮。
3.文本输入(文本方式)
(1)新建工程:
ProjectWizard。
(2)新建文件:
>DesignFiles>VerilogHDLFilles,出现文本编辑窗口。
编写Verilog程序。
(3)保存文件名:
As。
生成的文件扩展名为.v,并自动添加到工程。
(4)编译工程:
Progressing>StartCompilation。
或者在工具栏中选项编译工具按钮。
2.2基于QuartusII的平面编辑
(1)设备选择:
Assignments>device…。
Devicefamily:
FLEX10K
Availabledevices:
EPF10K10TC144-4
(2)平面规划:
Assignments>Pins。
出现图形界面,对管脚进行编辑,在Location中输入管脚分配号,同时可以在上面的芯片上看到引脚锁定。
(3)编译工程:
Progressing>StartCompilation。
或者在工具栏中选项编译工具按钮。
2.3基于QuartusII的模拟仿真
仿真可以分为功能仿真和时序仿真(***功能仿真需用工具生成功能仿真网表文件)。
功能仿真生成网表文件方法:
菜单\Processing\GenerateFunctionalSimulationNetlist。
仿真步骤如下:
(1)在工具栏中选择Settings>SimulatorSettings>Simulationmode,设置仿真方式为功能仿真或时序仿真。
(2)创建波形文件:
>VectorWaveformFile。
(3)选择仿真节点:
View>NodeFinder。
添加波形文件的引脚。
(4)设置仿真时间:
Edit>Endtime:
1us
GridSize:
100us
(5)设置波形或数据:
利用窗口左侧图标进行设置。
(6)存储波形文件:
As。
(7)波形模拟仿真:
Progressing>StartSimulation。
或点击工具栏中仿真图标。
2.4基于QuartusII的编程下载
(1)编程下载:
Tools>Programmer>Configure(hardtype:
ByteBlasterMV)。
(2)功能调试:
在LP-CPLD2900数字实验平台上验证电路功能。
第三章数字电路及逻辑实验
逻辑电路根据输出信号对输入信号响应的不同分为两类:
组合逻辑电路(简称组合电路)与时序逻辑电路(简称时序电路)。
在组合逻辑电路中,电路在任一时刻的输出信号仅仅决定于该时刻的输入信号,而与电路的原有的输出状态无关。
从电路的结构上看,组合逻辑电路的输出端和输入端之间没有反馈回路。
在时序逻辑电路中,任何时刻电路的输出不仅取决于该时刻的输入信号,也取决于电路过去的输入。
一般来说,它是由组合逻辑电路和存储电路两部分组成,并形成反馈回路。
3.0一位半加器的设计
3.0.1实验内容
试设计两个一位二进制变量a、b相加,输出本位和s及进位c的逻辑电路。
3.0.2设计方法
1、利用真值表法,写出最简与或逻辑表达式
输入变量
ab
输出变量
sc
10
11
20
11
10
20
10
01
s=a’b+ab’=a⊕bc=ab
逻辑符号名:
xor---异或门;and2---两输入与门。
2、根据最简逻辑表达式,用QUARTUSII图形输入法,画出逻辑电路。
3、平面编辑、编译及下载调试。
4、用VerilogHDL连续赋值语句assign描述。
modulefadd(a,b,s,c,ledcom);
inputa,b;
outputs,c,ledcom;
wirea,b,s,c;
assignledcom=1;
assigns=!
a&&b||a&&!
b;
assignc=a&&b;
endmodule
5、用VerilogHDL门原语设计上述逻辑功能(考核点)
设计发挥:
设计一位全加器(学生自选)
真值表如下:
ABCin
SumCout
000
001
010
011
100
101
110
111
00
10
10
01
10
01
01
11
表达式如下:
S=A⊕B⊕Cin
Ci=(A⊕B)Cin+AB
3.1译码器的设计
3.1.1概念
译码器是一种多输出组合逻辑部件,它能将n个输入变量变换成2的n次方个输出函数,并且每个输出函数对应于n个输入变量的一个最小项。
3.1.2设计内容
试设计一个具有使能端的2:
4译码器,要求使能输入端g=0时,允许对输入的二进制代码进行译码,对应的输出端输出0,其它输出端输出均为1。
当使能输入端g=1时,禁止对输入的二进制代码进行译码,译码器的输出y0、y1、y2、y3均为1。
3.1.3设计方法
1、建立真值表,利用公式法或卡诺图法写出最简与或许逻辑表达式
使能控制
G
输入端
A1A0
输出端
Y3Y2Y1Y0
1
0
0
0
0
XX
10
11
20
11
1111
1110
1101
1011
0111
y0’=g’a1’a0’;y1’=g’a1’a0;y2’=g’a1a0’;y3’=g’a1a0;
y0=(g’a1’a0’)’;y1=(g’a1’a0)’;y2=(g’a1a0’)’;y3=(g’a1a0)’;
逻辑符号名:
nand3---三输入与非门;not---非门。
2、根据最简逻辑表达式,用QUARTUSII图形输入法,画出逻辑电路
3、平面编辑、编译及下载调试。
4、用三目条件运算符描述
moduledecoder(g,a1,a0,y3,y2,y1,y0,ledcom);
inputa1,a0,g;
outputy3,y2,y1,y0;
outputledcom;
assignledcom=1;
assigny0=(!
g&&!
a1&&!
a0)?
0:
1;//信号=条件?
表达式1:
表达式2;
assigny1=(!
g&&!
a1&&a0)?
0:
1;
assigny2=(!
g&&a1&&!
a0)?
0:
1;
assigny3=(!
g&&a1&&a0)?
0:
1;
endmodule
5、试用VerilogHDLcase语句描述上述逻辑功能(考核点)
3.2数据比较器的设计
3.2.1概念
在数字系统中,经常需要比较两个数的大小,用来完成两个数码比较的数字逻辑电路称为数据比较器。
3.2.2内容
试设计一个两位数据比较器,当a1a0>b1b0时g=1,当a1a03.2.3设计方法
1、建立功能表,利用公式法或卡诺图法写出逻辑表达式。
比较输入
a1b1a0b0
比较输出
gse
a1>b1X
a1a1=b1a0>b0
a1=b1a0a1=b1a0=b0
100
010
100
010
001
注:
X表示任意值
g=a1b1’+(a1b1+a1’b1’)a0b0’=a1b1’+(a1☉b1)a0b0’
s=a1’b1+(a1b1+a1’b1’)a0’b0=a1’b1+(a1☉b1)a0’b0
e=(a1b1+a1’b1’)(a0b0+a0’b0’)=(a1☉b1)(a0☉b0)
符号名:
xnor---同或门;xor---异或门;and2---与门;or2---或门;not---非门。
2、根据最简逻辑表达式,用QUARTUSII图形输入法,画出逻辑电路
3、平面编辑、编译、仿真及下载调试。
通过上面设计可以看出比较器电路是较复杂的,当两个数的位数越大电路就越发复杂。
因此用硬件描述语言设计比较器就越发显示出优势。
4、用VeriHDLif-else条件语句描述。
modulecomp(a,b,g,s,e,ledcom);
input[1:
0]a,b;
outputg,s,e;
outputledcom;
regg,s,e;
assignledcom=1;
always@(aorb)
begin
if(a>b)beging=1;s=0;e=0;end
elseif(a
elsebegine=1;g=0;s=0;end
end
endmodule
5、试用VerillogHDL三目条件运算符描述(考核点)
3.3同步计数器的设计
3.3.1概念
计数器的功能是记忆脉冲的个数,它所记忆脉冲的最大数目称为该计数器的模。
计数器可分为同步计数器(又称并行计数器)和异步计数器(又称串行计数器)。
构成计数器的核心元件是触发器。
同步计数器特点是各触发器的CP端连在一起,既受同一个脉冲信号控制。
3.3.2设计内容及方法
试设计一个三位二进制加1同步计数器(模=8),其步骤如下:
1、根据逻辑要求写出计数器的状态转移表
计数脉冲
cp
触发器现态
q2q1q0
触发器次态
q2+1q1+1q0+1
输出
z
000
001
0
001
010
0
010
011
0
011
100
0
100
101
0
101
110
0
110
111
0
111
000
1
2、根据状态转移表写出输出方程和激励方程
dz=q2q1q0;d2=∑m(3,4,5,6)=q2’q1q0+q2q1’+q2q0’;
d1=∑m(1,2,5,6)=q1⊕q0;d0=∑m(0,2,4,6)=q0’
3、在QUARTUSII图形编辑窗口,调出7474正边沿触发的双D触发器元件及所需的逻辑门,然后根据输出方程和激励方程连接电路,检查与编辑、平面配置、编辑、波形仿真或下载调试。
z(7)q2(8)q1(9)q0(10)reset(47)cp(48)ledcom(141)
5、VerlogHDL描述
(1)VerlogHDL描述
(2)
moduleconter3(cp,reset,q,z,ledcom);moduleconter3(cp,reset,q,z,ledcom);
inputcp,reset;inputcp,reset;
output[2:
0]q;output[2:
0]q;
outputz,ledcom;outputz,ledcom;
reg[2:
0]q;reg[2:
0]q;
regz;regz;
assignledcom=1;assignledcom=1;
always@(posedgecp)always@(posedgecpornegedgereset)
beginbegin
if(!
reset)if(!
reset)
beginq<=0;z<=0;endbeginq<=0;z<=0;end
elseelse
beginbegin
if(q!
=3'b111)if(q!
=3'b111)
beginq<=q+1;z<=0;endbeginq<=q+1;z<=0;end
elseelse
beginq<=0;z<=1;endbeginq<=0;z<=1;end
endend
endend
endmoduleendmodule
6、试用VerlogHDL语言设计四位可逆计数器,当load=1时将d0数据加载到可逆计数器;load=0时,控制信号as=01进行加1计数,当as=10进行减1计数,当as=00或11停止计数。
3.4分频器(除频器)的设计
在数字系统中,常需要各种不同的时钟频率,从HZ、KHZ到MHZ。
而各种频率的产生,
一般依赖主频率(例如石英振荡器产生的频率)分频得到。
分频器是计数器应用之一。
3.4.1实验内容
利用例化器件7474,试设计一个5分频器(对主频率除5)。
3.4.2设计方法
1、写出5分频器(对主频率除5)状态转移表
主频
clk
触发器现态
q2q1q0
触发器次态
q2+1q1+1q0+1
分频输出
f
000
001
1
001
010
1
010
011
0
011
100
0
100
000
0
2、根据状态转移表写出输出方程和激励方程并化简(包含无关项)
f=∑m(0,1)=q2’q1’
d2=∑m(3)+∑Φ(5,6,7)=q1q0
d1=∑m(1,2)+∑Φ(5,6,7)=q1’q0+q1q0’=(q1⊕q0)
d0=∑m(0,2)=q2’q0’
3、启动MAX+PLUS2设计软件,调出例化器件7474及所需逻辑门,根据输出方程和激励方程连接电路。
存储检查、编辑、波形仿真。
clk=1/T=1/0.0000002s=500khzf=clk/5=100khz
4、硬件语言描述
用VerlogHDL描述(占空比可设置的除5分频器)
modulediv5(clk,reset,f);
inputclk,reset;
outputf;
regq2,q1,q0,f;
always@(posedgeclk)
begin
if(!
reset)begin{q2,q1,q0}<=0;f<=0;end
elsebegin
case({q2,q1,q0})
0:
begin{q2,q1,q0}<=1;f<=1;end
1:
begin{q2,q1,q0}<=2;f<=1;end
2:
begin{q2,q1,q0}<=3;f<=0;end
3:
begin{q2,q1,q0}<=4;f<=0;end
4:
begin{q2,q1,q0}<=0;f<=0;end
default:
begin{q2,q1,q0}<=0;f<=0;end
endcase
end
end
endmodule
用VerlogHDL描述(2+2*N的分频器)
moduledivfx(clk,reset,fx,ledcom);
inputclk,reset;
outputfx,ledcom;
reg[24:
0]n;
regfx;
assignledcom=1;
always@(posedgeclk)
begin
if(!
reset)
beginn<=0;fx<=0;end
elseif(n==3)//(n==N)N为整数
beginfx<=!
fx;n<=0;end
else
beginn<=n+1;end
end
endmodule
5、试用VerlogHDL设计能对主频进行2、4、8、16分频的时序电路。
(考核点)
3.5移位寄存器
3.5.1概念
在时钟信号控制下,将所寄存的数据向左或向右移位的寄存器称为移位寄存器。
3.5.2设计内容
试设计一个四位同步并入串出的右移寄存器。
要求当加载控制信号load高电平时,在时钟作用下将输入四位二进制数据x3x2x1x0加载到移位寄存器q3q2q1q0中;当load低电平时,在时钟clk作用下将四位移位寄存器中的数据向右移位一位,既0q3q2q1q0so。
3.5.3设计
1、右移操作状态转移表
Q3Q2Q1Q0
Q3+1Q2+1Q1+1Q0+1