110901112刘克勤数电课设Word下载.docx
- 文档编号:1464862
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:27
- 大小:573.67KB
110901112刘克勤数电课设Word下载.docx
《110901112刘克勤数电课设Word下载.docx》由会员分享,可在线阅读,更多相关《110901112刘克勤数电课设Word下载.docx(27页珍藏版)》请在冰点文库上搜索。
4.5复位功能的实现:
15
4.6编码代换模块:
16
五.电路的组构与调试:
17
5.1遇到的主要问题及现象记录:
5.2产生上述现象的原因分析与解决措施:
18
六.拓展功能(音乐按键):
6.1音乐按键的描述:
6.2音乐按键功能的设计与原理:
19
6.2.1lpmcounter的使用与原理:
6.2.2二分频电路(占空比为50%)设计与原理:
20
6.2.3lpmcounter与二分频电路之间连接电路设计:
21
6.2.4十六选一数据选择器:
22
七.结束语:
23
7.1对设计题目的结论性意见及进一步改进的意向说明:
7.2总结设计的收获与体会:
八.参考文献24
本次课程设计的内容是制作一部电话机,有0到9以及’#’,’*’这12个基本功能键,同时应带有一个LED显示屏,用以显示按键的数字.同时应带有左移功能,即当人再次按下键时,之前显示的数字会在紧靠左面的数码管显示,最右边的数码管只显示现在按下键的数字.
该设计可大致分为动态扫描模块,单脉冲发生器,分频器模块,六位输入移位寄存器模块以及编码代换模块.动态扫描模块用以实现对按键的扫描,即确定是键盘中的哪一个按键被按下.单脉冲发生器用以进行消抖功能,以避免因机械开关的振动而产生的对本次设计的干扰.分频器模块是对通过对10MHz的分频以获得所需的频率.六位输入移位寄存器模块可以实现当按键再次被按下时,将数码管显示的数字向前一位数码管移动的功能.编码代换则是通过四位二进制数输入的不同来实现显示器中段控制器a到g的亮灭状态的控制,以在七段显示器中显示所需的数字.
1.当按下按键时,会在七段共阴显示器上,显示所按键对应的数字
2.应当保证当按下一次按键时,七段显示器上只显示一次按键数字,而不应是多次显示出该按键对应的数字.
3.当多次按下按键时,显示器上显示的的数字会对应往左移,即之前显示的数字会在紧邻的左面的显示管上显示,最右端数码管上始终显示刚按下去的按键数字.
4.应当设有复位键,当复位键按下时,数码管上的数字全部消失.
5.电路图应当尽量简单易懂,同时要保证连接的线路不会穿过元件.
首先,我们需要一个分频器对10MHz的输入频率进行分频,以获得1MHz,100KHz,10KHz,1KHz,100Hz,10Hz,1Hz的脉冲信号,同时应保证脉冲信号的占空比为50%.其后,我们应构建动态扫描按键部分,以识别所按键的不同,并将按键所对应的数字用二进制数来表示。
之后的移位寄存部分,可以将之前显示的数字往前面一个的数码管上移动,最右边的数码管始终显示刚刚按下键对应的数字。
最后,需要设计一个编码代换模块,通过输入的4位二进制数的不同来控制数码管上a到g段控制端的“0”,“1”状态,以在七段显示器上显示不同的数字。
分频器模块:
可以通过多个LS7490芯片实现多极十进制分频,但是,为了达到50%占空比,应将计数脉冲CP控制五进制计数器的时钟CLKB,并以五进制计数器的最高位输出QD控制二进制计数器的时钟CLKA,即构成5421BCD码十进制计数器。
至于原理以及具体连接法会在第四章中具体讲解。
动态扫描按键模块:
可以使用俩片74161十六进制计数器级连作为状态机,取其中的5个输出端的低三位分别连接到FPGA控制外部的74138的DE1,DE2,DE3,另外俩个高位输出端连接到四选一数据选择器74153的选择输入A0,A1端。
未扫描到按键时,状态机处于计数状态,一旦扫描到按键,计数器会处于保持状态,同时,使寄存器工作,将此时计数器输出端的二进制数字输入到寄存器中。
单脉冲发生器模块:
可以使用俩个D触发器(令其时钟同接一个脉冲输入信号)。
使其第一个D触发器的输出进入到第二个D触发器的输入,同时,该触发器的输出接非门,并与第一个触发器的输出一起接与门,该与门的输出作为该模块的输出。
移位寄存器模块:
可以使用多个D触发器级联构成移位寄存器,再使用八选一数据选择器选择输出哪个D触发器的输出。
编码代换模块:
可以使用Quartus2的AHDL文件编辑去实现该功能。
具体的程序可以参考〈〈基于FPGA的数字电路系统设计〉〉中的P46的程序。
但需要注意的是要保证输入的四位二进制数与对应输出的八位二进制数一一对应,不可重复。
至于程序代码会在第四章中列出。
3.3各功能的组成
分频器模块:
由7片LS7490构成7级十分频的分频模块。
动态扫描按键模块:
由俩片74161级联构成状态机,一片四选一数据选择器74153,一片寄存器74374,非门若干
单脉冲发生器:
由俩片D触发器,以及一个非门和一个与门构成。
移位寄存器模块:
由六片D触发器构成六位移位寄存器,同时选用八选一数据选择器选择输出哪一个D触发器的输出。
编码代换模块:
由AHDL文件构成。
3.4总体工作工程
工作过程可由上图描述,分频器负责分出适合状态机,寄存器以及单脉冲发生器工作的脉冲信号CP。
动态扫描按键中的状态机会在计数状态下不断输出不同的五位输出
通过将其5位输出输入到DE1,DE2,DE3以及四选一数据选择器的选择输入端A0和A1,来使其不停的扫描键盘。
一旦扫描到按键,会输出一个信号Y使其状态机停止计数,变为保持状态。
同时会导通寄存器,使其能对此时状态机输出的二进制数进行寄存功能。
之后Y信号也会作为单脉冲产生器的输入端,以进行消抖功能,产生的脉冲信号MC的脉宽将与CP的宽度一致。
而寄存器输出的二进制数与脉冲信号MC输入到六位移位寄存器模块进行移位功能,最后经过编码代换,产生八位二进制数,来控制7段显示器中显示的段控制器a到g的状态,以完成六位动态显示功能。
四.单元电路的选择设计与原理分析
4.1分频器模块
为了达到所需的7级10分频,采用LS7490作为十分频分频器,因为要达到7级分频,须使用7个LS7490。
(因为截图过大,只取1KHz到1MHz的频率,其他的连接方法以此类推)
使用LS7490进行十分频,可以采用俩种连接方式:
第一种:
当计数脉冲CP控制二进制计数器的时钟CLKA,并以二进制计数器输出QA控制五进制计数器的时钟CLKB,即构成8421BCD码十进制计数器,输出码从高位到低位顺序为QD,QC,QB,QA。
在每个计数脉冲的下降沿QA翻转,而在QA下降沿,五进制计数器加一。
每10个计数脉冲QD~QA状态循环变化一周。
计数的时序波形如下图:
(从上到下依次为QD,QC,QB,QA,CP)
第二种:
计数脉冲CP控制五进制计数器的时钟CLKB,并以五进制计数器的最高位输出QD控制二进制计数器的时钟CLKB,并以五进制的最高位输出QD控制二进制计数器的时钟CLKA,即构成5421BCD十进制计数器,输出码从高位至低位顺序为QA,QD,QC,QB。
在每个计数脉冲的下降沿五进制计数器加1;
而每个QD的下降沿QA翻转。
每10个计数脉冲周期计数器输出状态循环一周。
计数时序波形如下:
(从上到下依次为QA,QD,QC,QB,CP)
通过这俩种时序波形的比较,虽然二者都可以实现最高位输出信号频率为计数脉冲频率的十分之一,但是第一种信号的占空比为20%,(8个CP周期为低电平,2个CP周期为高电平),而第二种方法信号的占空比为50%(5个CP周期为低电平,5个CP周期为高电平)。
所以如果要选择占空比为50%的分频信号,应该选择第二种连接方式。
总体连接图如下(黑色箭头连线中的部分):
4.2.2动态扫描按键设计与原理分析:
图中计数器输出5位二进制码Q4Q3Q2Q1Q0,每组码通过译码器产生一列低电平有效的列信号,依次扫描键盘每一列,而数据选择器的D0D1D2输入端在没有按键按下时是高电平,一旦某一行中有按键被按下,且A0A1不断变化时,必定会有某一时刻,数据选择器的输出Y变为0,并且如果Y与计数器的ENT相连接,此时计数器会处于保持状态,所以,计数器输出的二进制码将会与阵列中的按键一一对应。
在此举个例子表示这种关系,当计数器输出为”10001”,A1A0为10,表示所按键在D2行,同时因为A2A1A0为001,表示扫描的是Y1列,即可确定所按的键为数字6。
五位三十二进制计数器:
因为没有5位三十二进制计数器,所以我们需要用俩片74161十六进制计数器级联来构成。
连接图如下:
当第一片74161工作且EN不为0时,第一片74161处于计数状态,
会由0000~1111,当
=1111时,RCO会产生一个上跳边(即由0变为1),从而使第二片74161工作,此时,因为ENT,ENP均不为0,导致第二片始终处于计数状态,而当QB出现1时,通过非门与其俩个74161的清零端连接起来,这样可以使其QB一旦出现1,便使2个74161同时清零重新开始计数。
实验证明若QB不接非门与其二者的清零端相连接,会出现每按下几个按键,显示器上会出现每隔几个数字便会不显示数字的情况。
而第一片74161的ENT需要与四选一数据选择器的输出端相连接,这样当数据选择器输出为0时,第一片74161便会处于保持状态,同时,第二片74161会因为CLK没有接受到上升沿工作信号,而处于停止工作状态,QA的值会不变。
模块后的图像如下:
数据选择器:
这里的数据选择器采用四选一数据选择器74153,其中计数器的输出D4D3分别连接到选择输入端B,A。
数据选择器输出端Y要连接到计数器的ENT,并且要和寄存器的CLK相连接。
数据选择器输入C0,C1,C2,要分别连接RK1(Pin42),RK2(Pin43),RK3(Pin44).
注意:
数据选择器的输入端C3要始终接高电平。
因为若不接高电平,当扫描到C3行时,Y会始终输出低电平,导致计数器永远处于保持状态,按键扫描将会无法进行。
译码器:
计数器的输出端Q3Q2Q1分别接到译码器的输入端DE3(Pin37),DE2(Pin36),DE1(Pin37)
寄存器:
可以采用芯片74374作为寄存器,它的输入D1D2D3D4D5分别接到计数器输出端
上,同时输出Q1Q2Q4Q5分别接到不同的移位寄存器模块的输入上。
值得注意的是数据选择器74153的输出Y必须接一个非门后才能与寄存器的CLK端相连接。
因为输出Y平常是1,当有按键被扫描到时会变为0,产生下跳沿。
而74374须在上升沿来临时,才会工作,所以输出Y必须接一个非门后才能与寄存器的CLK端相连接。
4.3单脉冲发生器模块
在按键时,因为键盘上的按键采用的是机械开关,不可避免会出现机械抖动的情况,抖动时间约5到10ms.为了保证按键动作一次电路只判断到一次状态电平改变,需要采用单脉冲发生器来进行消抖操作。
可以采用D触发器来对电平信号整形,实现消抖动。
模块后的图象如下:
当单脉冲发生器的data输入端输入一直为0时,输出q也一直为0,此时若输入端data突变为1,就会使其输出q变为1,产生上跳沿。
之后若data输入一直为1,则输出端q变为0,又会产生下跳沿。
如果data输入由1突变到0或者一直为0,则输出端q始终为0。
此时,输出端q的脉冲宽度会变为与其工作脉冲clk的宽度一致,进而完成消抖工作。
六位移位寄存器可以采用6个D触发器去实现,其中生成的模块中的CP6工作脉冲来自单脉冲发生器的输出。
连接如下:
生成的模块如下:
当输入一个数字时,由于D触发器状态方程是Y=D,可知会在一个脉冲上升沿到来时,输出端y5会最先出现该数字,而在第二个脉冲上升沿到来时,第一个输入的数字会在y4处出现,而y5会出现刚输入进去的数字。
而在之后第三个第四个上升沿到来时的情况,也可以以此类推。
从而实现左移功能。
为了能让不同的显示器数码管上显示不同的数字,同时还具有左移功能,我们需要在移位寄存器之后再接一个八选一数据选择器74151,其选择端C,B,A分别接到DE3,DE2,DE1。
当我们按下第一个按键时,该数字会在移位寄存器的y5输出端出现,而此时因为C,B,A这3个输入端不停变化,当CBA为101时,选择器输出端输出该数字,同时因为DE3,DE2,DE1是显示器控制端,会使该数字在C6(即最右边的显示器)显现出来。
当按下第2个键时,y4会出现第一个数字,而y5却会输出第二个数字,因为CBA变化频率较快,当CBA分别为100,101时,会在C5,C6显示器上分别显示第一个数字和第二个数字。
以此类推,便可实现6位移位寄存器的左移功能。
但需要注意的是,本次实验是通过四位不同二进制数字来控制段控制器a~g的状态,所以我们应该需要4个移位寄存器模块,以输出端Y0Y1Y2Y3作为四位二进制数输入到编码代换模块中。
设计一个reset键,当按下此复位键时,数码管的数字全部消失,变成全灭状态。
我们可以使用外设中的PS2(Pin56)作为复位键,令其连接到四个移位寄存器的清零端,同时在移位寄存器的输入最高位以及次高位接一个非门
连接如下面俩图:
同时我们应该在编码代换模块中的编程中加入如下一段程序
b"
0000"
=>
0,0,0,0,0,0,0;
这样当按下PS2时,会输入一个低电平,使其四个移位寄存器实现清零功能,进而达到当复位键按下去时实现所有显示器全灭的功能。
通过AHDL文件的编译来实现通过四位二进制来控制段控制器a~g的状态,编程如下:
SUBDESIGNbianmannn
(
data_in[3..0]:
INPUT;
a,b,c,d,e,f,g:
OUTPUT;
)
BEGIN
TABLE
data_in[3..0]=>
a,b,c,d,e,f,g;
b"
1100"
0,1,1,0,0,0,0;
1101"
0,1,1,0,0,1,1;
1110"
1,1,1,0,0,0,0;
1000"
1,1,0,1,1,0,1;
1001"
1,0,1,1,0,1,1;
1010"
1,1,1,1,1,1,1;
1011"
1,1,1,1,1,1,0;
0100"
1,1,1,1,0,0,1;
0101"
1,0,1,1,1,1,1;
0110"
1,1,1,1,0,1,1;
0111"
1,1,1,1,1,0,0;
ENDTABLE;
END;
生成的模块如下:
1.刚开始选择分频器的输出频率是10KHz,发现当按下一次按键时,会导致显示器上出现多个相同的数字。
当分频器输出频率是100Hz或者更小时,显示器上的所有数字会闪烁。
2.第一次测试时,发现显示器上每隔几个数字就会产生一个显示器全灭的情况。
3.当复位键按下时,发现显示器上都会出现数字”1”,而不是要求中的显示器全灭的情况。
4.当上述问题都解决后,最开始设计中移位寄存器采用的是俩片74194级联构成六位移位寄存器,发现当分频器取1KHz,500Hz时,显示器会出现按下一次按键时,会导致显示器上出现多个相同的数字的情况或者每隔几个数字便会出现一个错误数字的情况。
1.发生按下一次按键时,会导致显示器上出现多个相同的数字情况,这表明我们选择的扫描频率过高,通过实验一一测试发现频率选取1KHz或者500Hz都可以。
本实验最终选取1KHz作为扫描频率。
而如果选择100Hz或者更低,会因为扫描频率太低,导致人们肉眼可以观察到数字的闪烁情况。
(经实验测试250Hz的扫描频率也会出现显示器数字闪烁的问题。
2.出现该情况,发现是因为2片十六位进制计数器74161的级联中,第2片74161的输出端QB没有接非门然后与俩片74161的清零端相连接。
3.当复位键按下时,移位寄存器会清0,此时由4片74151输出构成的4位二进制数会与当扫描到数字“1”键的编码值相同。
所以导致当复位键按下时,发现显示器上都会出现数字”1”,而不是要求中的显示器全灭的情况。
我们可以在移位寄存器的输入最高位以及次高位接一个非门,具体连接请看4.6复位功能
。
同时改变编码代换的输入即可(原来输入的四位二进制最高位及次高位取反,同时加入输入为“0000”时的情况)。
4.经过实验证明,如果采用俩片74194级联构成六位移位寄存器,会发现对其分频器的输出扫描频率有较高要求,同时因为每个人的外设键盘的抖动情况不同,有些人只需要采用1KHz即可,有些人需要采用500Hz才可以。
经过查阅资料发现,用6个D触发器也可以构成六位移位寄存器,经过测试,发现这种做法不会对分频器的输出扫描频率有较高要求。
本实验中采用的是后一种方法且采用的是1KHz的扫描频率(经过实验测试,发现若采用的是500Hz的扫描频率,并不会对结果产生影响)。
6.1音乐按键的描述:
设计10个按键声音,大体采用中音的多,来,米,发,索,拉,西(do,re,mi,fa,so,la,si)这7个音与数字1到7的按键声音一一对应,即按“1”键,会出现多(do),按“2”键会出现来(re),以次类推。
剩下的的“8”,“9”,“0”按键则与高音的多,来,米(do,re,mi)一一对应。
并且应当保证每按下一个键时,出现对应的声音,而当松开按键时,声音停止。
这十个音对应频率如下图:
中音
频率/Hz
对应的数字键
1
523.3
2
587.3
3
659.3
4
698.5
5
784
6
880
7
987.8
高音
1046.5
8
1174.7
9
1318.5
为了实现音乐按键功能,我们可以使用lpmcounter这个功能。
当我们要分出523.3Hz这个频率时,我们可以使用1MHz的输入脉冲连接到lpmcounter的输入端。
因为1MHz除以523Hz约等于1912,所以modulus应该设置为1912,同时,将输出端cout连接到模块输出端。
这样,lpmcounter就可以起到分频器功能,每当分出523Hz的频率,cout便会由0产生1,产生上上跳沿。
所以cout输出的脉冲频率为523Hz.连接图如下:
值得注意的是,上图中的modulus并不是1912,而是956。
因为如果modulus是1912,的确可以输出得到523Hz的信号脉冲,但是其占空比不为50%。
这样会导致按键的声音不准确。
所以应当再加一个2分频电路,使其占空比变为50%。
连接如上图:
该D触发器状态方程为Q=
假设初始状态Q=0,当第一个上升沿脉冲来临时,Q变为1,而当第二个上升沿脉冲来临时,Q变为0,当第三个上升沿来临时,Q又变为1。
后面情况以此类推。
时序图如下:
(上面波形为输出波形,下面波形为输入波形)
通过该波形我们可以确定上述连接电路的确可以达到二分频作用,且占空比的确为50%.
以523Hz频率为例:
此时因为二分频电路的添加,lpmcounter的modulus应该设置为956。
后面频率的分频设计以此类推,连接图如下:
(因为图片过大,只取一部分连接图)
生成的模块图如下:
6.2.4.1十六选一数据选择器设计:
十六选一数据选择器我们可以使用161mux芯片,与之前分频模块的连接图如下:
6.2.4.2十六选一数据选择器设计原理:
之前设计的频率分频模块只能分出所需要的音乐的频率,要想与数字键一一对应还需要加个十六选一数据选择器。
其SEL3,SEL2,SEL1,SEL0应当与其寄存器的输入端D4,D3,D1,D0相连接。
GN接四选一数据选择器的输出Y。
注意:
此处连接中FPGA的元件库中161mux的GN端标示错误。
若如上图中161mux标示,应当GN端为1时,161mux开始工作。
但实际测试中,发现确是当GN端为0时,它才工作。
我们可以举个例子来说明数据选择器与其分频器yinyuess模块之间的关系。
当我们按下数字键1时,数据选择器输入的SEL3,SEL2,SEL1,SEL0均为0,IN0与数据选择器输出端导通,此时,应当使523Hz的脉冲信号输入到IN0输入端,这样可以使其发出523Hz的声音,即中音的多。
其他连接可依照同理连接。
该题目切合实际,又与所学的数电知识紧密结合,难度适中,有益于学生更好的做到学以致用。
同时,该设计题目涉及到多个模块与器件的连接使用,非常有益于学生逻辑思维能力的培养以及对以往学过的数电知识的再次回顾,于实际应用中加深理解与记忆。
进一步改进意见:
我们可以在移位寄存器模块上再添加一个左移功能的移位寄存器,并且设计一个删除控制键,令其被按下时,右移寄存器停止工作,反而使左移移位寄存器工作,并且在显示器上显示左移功能,达到删除功能。
此次实验与以往的实验不同,以前的实验只需要根据给出的电路图去连接,然后测数据即可。
然而此次实验却需要我们去花更多的时间去研究原理,设计模块,思考与选择方案,研究模块之间的联系,实验的难度更高,但很好的锻炼了学生的独立思考与动手能力,有利于学生真正的去做到学以致用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 110901112 刘克勤数电课设