可编程电路技术课程设计指导书.docx
《可编程电路技术课程设计指导书.docx》由会员分享,可在线阅读,更多相关《可编程电路技术课程设计指导书.docx(41页珍藏版)》请在冰豆网上搜索。
可编程电路技术课程设计指导书
可编程电路技术课程设计指导
课程教学目的及要求:
目的:
1.巩固理论课阶段VHDL编程和CPLD/FPGA器件的开发应用知识;
2.培养学生逻辑设计能力和采用EDA方法进行设计的思想培养学生实际动手设计和实现复杂数字电路系统的能力。
要求:
1.深化EDA设计流程的概念并以实践巩固;
2.深入掌握EDA主流软件QuartusII以及相应的SOPCEDK,掌握仿真工具signaltap的应用;
3.学习良好的技术文档撰写方法与文风。
方法:
1.基于业界主流平台,用具体的设计题目为切入点,以流程分工为标准接口展开。
设计过程;1.在课程设计实施前将题目和使用的工具下放学生;
2.做好阶段性总结,分设计、仿真验证、电路实现、下载结果四个阶段进行验收,最后答辩并提交报告。
课程设计报告要求
1、课题要求;
2、课题的设计方案和方案比较;
3、各模块设计原理和实现(顶层~底层,根据不同的方法进行描述,给出具体实现步骤,包括程序流程、关键程序及其说明);
4、仿真与测试(给出仿真波形,简单进行分析测试);
5、创新点,独到的设计;
6、课程设计中的体会;
7、附录:
参考文献、源程序(带注释);
8、课程设计结束后一周内连电子程序按班交齐。
可编程电路原理课程设计目录
1多功能数字钟的设计
1.1设计要求
设计一个能进行时、分、秒计时的十二小时制或二十四小时制的数字钟,并具有定时与钟功能,能在设定的时间发出闹铃音,能非常方便地对小时、分钟和秒进行手动调节以校时间,每逢整点,产生报时音报时。
系统框图如图1-1所示:
图1-1多功能数字钟系统框图
显示部分可以使用数码管(基本)或液晶LCD(扩展)。
1.2设计提示
此设计问题可分为主控电路、计数器模块和扫描显示三大部,主控电路中各种特殊功能的实现设计问题的关键。
用两个电平信号A、B进行模式选择,AB=00为模式0,系统为计时状态;AB=01为模式1,系统为手动校时状态;AB=10为模式2,系统为闹钟设置状态。
设置一个turn信号,当turn=0时,表示在手动校对时,选择调整分钟部分;当turn=1时,表示在手动校对时,选择调整小时部分。
设置一个change信号,在手动校时或闹钟设置模式下,每按一次,计数器加1。
设置一个reset信号,当reset=0时,整个系统复位;当reset=1时,系统进行计时或其他特殊功能操作。
设置一个闹钟设置信号reset1,当reset1=0时,对闹钟进行设置,当reset1=0时,关闭闹钟信号。
设置状态显示信号(连发光二极管):
LD_alert指示是否设置了闹铃功能;LD_h指示当前调整的是小时信号;LD_m指示当前调整的是分钟信号。
当闹钟功能设置后(LD_alert=1),系统应启动一个比较电路,当计时与预设闹铃时间相等时,启动闹铃声,直到关闭闹铃信号有效。
整点报时部分由分和秒计时同时为0(或60)启动,与闹铃共用一个扬声器驱动信号out。
系统计时时钟为clk=1Hz,选择另一时钟clk_lk=1024Hz作为产生闹铃声、报时音的时钟信号。
主控电路状态表如表1-1所示。
硬件系统示意图如图1-2所示。
表1-1数字钟主控电路状态表
模式
选择
秒、分、时计数器秒冲
输出状态
备注
reset
reset1
AB
turn
LD_h
LD_m
LD_alert
0
x
xx
x
x
0
0
0
系统复位
1
x
00
x
clk
0
0
0
系统计时
1
x
01
0
change=↑
分计数器加1
0
1
0
手动校时
1
x
01
1
change=↑
时计数器加1
1
0
0
1
1
10
0
change=↑
分计数器加1
0
1
1
设置闹钟
1
1
10
1
change=↑
时计数器加1
1
0
1
1
0
xx
x
x
0
0
0
关闭闹钟
图1-2数字钟硬件系统示意图
2数字式竞赛抢答器
2.1设计要求
设计一个可容纳四组参赛的数字式抢答器,每组设一个按钮供抢答使用。
抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用;设置一个主持人“复位”按钮,主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,用指示灯显示抢答组别,扬声器发出音响。
设置犯规电路,对提前抢答和超时答题(例如3分钟)的组别鸣笛示警,并由组别显示电路显示出犯规组别。
设置一个计分电路,每组开始预置10分,由主持人计分,答对一次加1分,答错一次减1分。
系统框图如图2-1所示:
图2-1数字式竞赛抢答器系统框图
显示部分可以使用数码管(基本)或液晶LCD(扩展)。
2.2设计提示
此设计问题可分为第一信号鉴别锁存模块,答题计时模块,计分电路模块和扫描显示模块四部分。
第一信号鉴别锁存模块的关键是准确判断出第一抢答者并将其锁存,在得到第一信号后将输入端封锁,使其他组的抢答信号无效,可以用触发器或锁存器实现。
设置抢答器按钮K1、K2、K3、K4,主持人复位信号reset,扬声器驱动信号out。
reset=0时,第一信号鉴别锁存电路、答题计时电路复位,此状态下,若有抢答按钮按下,鸣笛示警并显示犯规组别;reset=1时,开始抢答,由第一信号鉴别锁存电路形成第一抢答信号,进行组别显示,控制扬声器发出音响,并启动答题计时电路,若计时时间到主持人复位信号还没有按下,则由扬声器发出犯规示警声。
计分电路是一个相对独立的模块,采用十进制加/减计数器、数码管数码扫描显示,设置复位信号reset1、加分信号up、减分信号down,reset1=0时,所有得分回到起始分(10分),且加减分信号无效;reset=1时,由第一信号鉴别锁存电路的输出信号选择进行加减分的组别,每按一次up,第一抢答组加一分;,每按一次down,第一抢答组减一分。
硬件系统示意图如图2-2所示。
图2-2数字抢答器硬件系统示意图
3数字频率计
3.1设计要求
设计一个能测量方波信号频率的频率计,测量结果用十进制显示,测量的频率范围是1~100KHz,分成两个频段,即1~999Hz,1KHz~100KHz,用三位数码管显示测量频率,用LED显示表示单位,如亮绿灯表示Hz,亮红灯表示KHz。
具有自动校验和测量两种功能,即能用标准时钟校验测量精度。
具有超量程报警功能,在超出目前量程档的测量范围时,发出灯光和音响信号。
系统框图如图3-1所示。
图3-1频率计系统框图
显示部分可以使用数码管(基本)或液晶LCD(扩展)。
3.2设计提示
脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式f=N/T,f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间,所以在1秒时间内计数器所记录的结果,就是被测信号的频率。
此设计问题可分为测量/校验选择模块、计数器模块、送存选择器报警模块、锁存模块和扫描显示模块几部分。
测量/选择模块的输入信号为:
选择信号selet、被测信号meas、测试信号test,输出信号为CP1,当selet=0时,为测量状态,CP1=meas;当select=1时,为校验状态,CP1=test,校验与测量共用一个电路,只是被测信号CP1不同而已。
设置1秒定时信号(周期为2秒),在1秒定时时间内的所有被测信号送计数器输入端。
计数器对CP1信号进行计数,在1秒定时结束后,将计数器结果送锁存器锁存,同时将计数器清零,为下一次采样测量做好准备。
设置量程档控制开关K,单位显示信号Y,当K=0时,为1~999Hz量程档,数码管显示的数值为被测信号频率值,Y显示绿色,即单位为Hz,当K=1时,为1KHz~100KHz量程档,被测信号频率值为数码管显示的数值乘以1000,Y显示红色,即单位KHz。
设置超出量程档测量范围示警信号alert。
计数器由四级十进制计数构成(带进位C)。
若被测信号频率小于1KHz(K=0),则计数器只进行三级十进制计数,最大显示值为999.Hz,如果被测信号频率超过此范围,示警信号驱动灯光、扬声器报警;若被测信号为1KHz~100KHz(K=1),计数器进行四位十进制计数,取高三位显示,最大显示值为99.9KHz,如果被测信号频率超过此范围,报警。
送存选择、报警电路状态表如表3-1所列。
表3-1送存选择、报警电路状态表
量程控制
计数器
锁存
小数点位置
报警信号
K
Q40
C
D3D2D1
alert
0
0
1
1
0
1
X
X
0
0
0
1
Q3Q2Q1
Q3Q2Q1
Q4Q3Q2
Q4Q3Q2
右第一位
右第一位
右第二位
右第二位
0
1
0
1
硬件系统示意图案如图3-2所示。
图3-2数字频率计硬件系统示意图
4拔河游戏机
4.1设计要求
设计一个能进行拔河游戏的电路。
电路使用15个(或9个)发光二极管表示拔河的“电子绳”,开机后只有中间一个发亮,此即拔河的中心点。
游戏甲乙双方各持一个按钮,迅速地、不断地按动产生脉冲,谁按得快,亮点向谁方向移动,每按一次,亮点移动一次。
亮点移到任一方终端二极管,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。
由裁判下达比赛开始命令后,甲乙双方才能输入信号,否则,输入信号无效。
用数码管显示获胜者的盘数,每次比赛结束自动给获胜方加分。
系统框图如图4-1所示。
图4-1拔河游戏机系统框图
4.2设计提示
此设计问题可以分为加/减计数器、译码器和甲乙双方的得分计数器显示电路几部分。
设置参赛双方输入脉冲信号in1、in2,用可逆计数器的加、减计数输入端分别接受两路按钮脉冲信号。
设置裁判员“开始”信号begin,begin有效后,可逆计数器才接受in1、in2信号。
用一个四线-十六线译码器,输出接15个(或9个)发光二极管,设置一个复位信号reset,比赛开始,reset信号使译码器输入为1000,译码后中心处二极管点亮,当计数器进行加法计数时,亮点向右移,减法计数时,亮点向左移。
当亮点移到任一方终端时,由控制电路产生一个信号使计数器停止接受计数脉冲。
将双方终端二极管“点亮”信号分别接两个得分计数显示电路,当一方取胜时,相应的得分计数器进行一次得分计数,这样得到双方取胜次数的显示。
设置一个记分计数器复位信号reset1,使双方得分可以清零。
硬件系统示意图如图4-2所示。
图4-2拔河游戏机硬件系统示意图
5洗衣机控制器
5.1设计要求
设计一个洗衣机洗涤程序控制器,控制洗衣机的电机作如下规律运转:
图5-1洗衣机控制器控制要求
用两位数码管预置洗涤时间(分钟数),洗涤过程在送入预置时间后开始运转,洗涤中按倒计时方式对洗涤过程作计时显示,用LED表示电机的正、反转,如果定时时间到,则停机并发出音响信号。
系统框图如图5-2所示。
图5-2洗衣机控制器系统框图
显示部分可以使用数码管(基本)或液晶LCD(扩展)。
5.2设计提示
此设计问题可分为洗涤预置时间编码模块、减法计数显示、时序电路、译码驱动模块四大部分。
设置预置信号LD,LD有效后,可以对洗涤时间计数器进行预置数,用数据开关K1∼K10分别代表数字1、2、…、9、0,用编码器对数据开关K1~K10的电平信号进行编码,编码器真值表如表5-1所列,编码后的数据寄存。
表5-1编码器真值表
数据开关电平信号
编码器输出
K1K2K3K4K5K6K7K8K9K10
Q3Q2Q1Q0
↑000000000
0↑00000000
00↑0000000
000↑000000
0000↑00000
00000↑0000
000000↑000
0000000↑00
00000000↑0
000000000↑
0001
0010
0011
0100
0101
0110
0111
1000
1001
0000
设置洗涤开始信号start,start有效则洗涤时间计数器进行倒计数,并用数码管显示,同时启动时序电路工作。
时序电路中含有20秒定时信号,10秒定时信号,设为A、B,A、B为“0”表示定时时间未到,A、B为“1”表示定时时间到。
时序电路状态表如表5-2所列。
表5-2时序电路状态表
状态
电机
时间/S
S0
S1
S2
S3
正转
停止
反转
停止
20
10
20
10
状态编码为:
S0=00S1=01S2=11S3=10
若选JK触发器,其输出为Q2Q1
逻辑赋值后的状态表如表5-3所列。
表5-3逻辑赋值后的状态表
AB
Qn2Qn1
Q2n+1Q1n+1
说明
0X
1X
X0
X1
0X
1X
X0
X1
00
00
01
01
11
11
10
10
00
01
01
11
11
10
10
00
维持S0
S0→S1
维持S1
S1→S2
维持S2
S2→S3
维持S3
S3→S0
设置电机正转信号run,反转信号rev,暂停信号pause,由时序电路的输出Q2Q1经译码驱动模块,可使显示信号正确反映电路的工作状态,译码驱动模块真值表如表5-4所列。
表5-4译码驱动电路真值表
Q2Q1
run
rev
pause
00
01
11
10
1
0
0
0
0
0
1
0
0
1
0
1
直到洗涤计时时间到,时序电路异步复位,并启动音响电路。
硬件系统示意图如图5-3所示。
图5-3洗衣机控制器硬件系统示意图
6电子密码锁
6.1设计要求
设计一个电子密码锁,在锁开的状态下输入密码,设置的密码共4位,用数据开关K1∼K10分别代表数字1、2、…、9、0,输入的密码用数码管显示,最后输入的密码显示在最右边的数码管上,即每输入一位数,密码在数码管上的显示左移一位。
可删除输入的数字,删除的是最后输入的数字,每删除一位,密码在数码管的显示右移一位,并在左边空出的位上补充“0”。
用一位输出电平的状态代表锁的开闭状态。
为保证密码锁主人能打开密码锁,设置一个万能密码,在主人忘记密码时使用。
系统框图如图6-1所示。
图6-1密码锁系统框图
显示部分可以使用数码管(基本)或液晶LCD(扩展)。
6.2设计提示
此设计问题可分为密码输入删除控制模块、寄存模块、比较模块、扫描显示几部分。
在密码输入删除控制模块中,用编码器对数据开关K1-K10的电平信号进行编码,编码器真值表如表6-1所列。
输入密码是在锁打开的状态下进行的,每输入一位数,密码在数码管上的显示左移一位。
设置删除信号back,每按下一次back,删除最后输入的数字,密码在数码管的显示右移一位,并在左边空出的位上补充“0”,状态表如表6-2所列。
表6-1编码器真值表
数据开关电平信号
编码器输出
K1K2K3K4K5K6K7K8K9K10
Q3Q2Q1Q0
↑000000000
0↑00000000
00↑0000000
000↑000000
0000↑00000
00000↑0000
000000↑000
0000000↑00
00000000↑0
000000000↑
0001
0010
0011
0100
0101
0110
0111
1000
1001
0000
表6-2密码输入删除控制电路状态表
密码锁状态
数据开关
删除信号
数码管显示
lock
Ki
back
D3D2D1D0
1
1
↑
0
0
↑
右移
左移
设置密码确认信号set,当四位密码输入完毕后,按下set,则密码被送寄存器锁存,比较模块得A数据,同时密码显示电路清零。
设置密码锁状态显示信号lock,lock=0(LED灭)表示锁未开;lock=1(LED亮)表示锁已打开。
设置关锁信号close,当密码送寄存模块锁存后,按下close,则密码锁lock=0,锁被锁上。
设置密码检验信号cheak,在lock=0状态下,从数据开关输入四位开锁数码,按下cheak,则开锁数码送寄存模块锁存,数据比较模块得到B数据,若A=B,则D触发器被置“1”,锁被打开,否则,lock保持为“0”。
万能密码(例如0007)可预先设置在比较模块中。
密码锁的硬件系统示意图如图6-2所示。
图6-2密码锁硬件系统示意图
7脉冲按键电话按键显示器
7.1设计要求
设计一个具有7位显示的电话按键显示器,显示器应能正确反映按键数字,显示器显示从低位向高位前移,逐位显示按键数字,最低位为当前显示位,七位数字输入完毕后,电话接通,扬声器发出“嘟----嘟”接通声响,直到有接听信号输入,若一直没有接听,10秒钟后,自动挂断,显示器清除显示,扬声器停止,直到有新号码输入。
系统框图如图7-1所示。
图7-1脉冲按键电话按键显示器系统框图
显示部分可以使用数码管(基本)或液晶LCD(扩展)。
7.2设计提示
此设计题与密码锁有相似之处,可分为号码输入显示控制模块、主控制模块和扫描显示模块几部分。
表7-1编码器真值表
数据开关电平信号
编码器输出
K1K2K3K4K5K6K7K8K9K10
Q3Q2Q1Q0
↑000000000
0↑00000000
00↑0000000
000↑000000
0000↑00000
00000↑0000
000000↑000
0000000↑00
00000000↑0
000000000↑
0001
0010
0011
0100
0101
0110
0111
1000
1001
0000
在号码输入显示控制模块中,用数据开关K1-K10分别代表数字1、2、……9、0,用编码器对数据开关K1-K10的电平信号进行编码,得四位二进制数Q,编码器真值表在表7-1中已经给出。
每输入一位号码,号码在数码管上的显示左移一位,状态表如表7-2所列。
表7-2号码输入显示控制模块状态表
数据开关
数码管显示
Ki
D7
D6
D5
D4
D3
D2
D1
1
1
1
1
1
1
1
1
0
↑
↑
↑
↑
↑
↑
↑
0
0
0
0
0
0
0
D6
0
0
0
0
0
0
D5
D5
0
0
0
0
0
D4
D4
D4
0
0
0
0
D3
D3
D3
D3
0
0
0
D2
D2
D2
D2
D2
0
0
D1
D1
D1
D1
D1
D1
0
Q
Q
Q
Q
Q
Q
Q
0
x
熄灭
熄灭
熄灭
熄灭
熄灭
熄灭
熄灭
当七位号码输入完毕后,由主控制模块启动扬声器,使扬声器发出“嘟--嘟”声响,同时启动等待接听10秒计时电路。
设置接听信号answer,若定时时间到还没有接听信号输入,则号码输入显示控制电路的
信号有效,显示器清除显示,并且扬声器停止,若在10秒计时未到时有接听信号输入,同样
信号有效、扬声器停止。
设置挂断信号reset,任何时刻只要有挂断信号输入,启动3秒计数器C,3秒后系统
有效,系统复位。
主控制模块状态表如表7-2所列。
表7-2主控制模块状态表
接听信号
answer
挂断信号
reset
等待接听10秒计时
3秒计数器
扬声器
X
↑
X
X
X
↑
时间到
X
X
X
X
时间到
0
0
0
停止
停止
停止
硬件系统示意图如图7-2所示。
图7-2脉冲按键电话按键显示器硬件系统示意图
8乘法器
8.1设计要求
设计一个能进行两个十进制数相乘的乘法器,乘数和被乘数均小于100,通过按键输入,并用数码管显示,显示器显示数字时从低位向高位前移,最低位为当前显示位。
当按下相乘键后,乘法器进行两个数的相乘运算,数码管将乘积显示出来。
系统框图如图8-1所示。
图8-1乘法器系统框图
8.2设计提示
表8-1编码器真值表
数据开关电平信号
编码器输出
K1K2K3K4K5K6K7K8K9K10
Q3Q2Q1Q0
↑000000000
0↑00000000
00↑0000000
000↑000000
0000↑00000
00000↑0000
000000↑000