南京理工大学
课程名称:姓 名:学 号:成 绩:
课程考试
可编程逻辑器件 陈静 1001170101
1
可编程逻辑器件设计报告
任课教师评语: 签名: 年 月 日 一、设计要求:
数码管依次显示“ABCD”,结果在LED5~LED1上循环显示,第一个字符显示时间1秒钟,第二个字符显示时间2秒钟,第三个字符显示3秒钟,第四个字符显示4秒钟,第五个重复以上顺序,各显示间隔时间均2秒钟。其余LED不显示。
二、设计思想:
2.1设计要求解读
根据试题要求,该器件主要要完成的功能是使实验仪上 LED5数码管显示字符A时间为1秒钟后, 经过2s后在LED4数码管上显示B字符2s, 经过2s后在LED3数码管上显示C字符3s, 经过2s后在LED2数码管上显示D字符4s,
经过2s后在LED1数码管上显示A字符1s,经过2s后显示B字符2s,经过2s后显示C字符3s,经过2s后显示D字符4s,依次循环。
由此可知本题要完成以下部分的设计: (1)频率为1Hz,周期为1S的时钟信号的产生; (2)36进制的加法计数器;
(3)七段译码电路及LED5~LED1的片选; (4)74154(4线—16线译码器)。 2.2总体设计思想
2
可编程逻辑器件设计报告
器件总体设计程序框图如图2-1
LED灯 4线—16线译码器 图2-1 器件总体设计程序框图
实验仪晶振信号 分频器
36进制加法计数器七段译码器 最终输出
三、设计过程(电路原理图或AHDL):
3.1主要子模块设计 3.1.1分频器设计
要将频率为1MHz的信号分频为频率为1Hz的信号,需实现100万分频,在计算机和电路设计中亦可用2的20次方分频作为100万分频,故本分频器即实现2的20次方分频。T触发器可实现2分频,将20个T触发器级联即可实现所需功能,此时采用电路图编辑方法将非常麻烦,故采用AHDL语言进行设计,其程序如下:
SUBDESIGN CJFENPINQI (
CLK :INPUT; CLKOUT:OUTPUT; )
VARIABLE COU[19..0]:TFF; BEGIN COU[].T=VCC; COU[0].CLK=CLK;
FOR I IN 0 TO 18 GENERATE COU[I+1].CLK=COU[I].Q;
3
可编程逻辑器件设计报告
END GENERATE; CLKOUT=COU[19]; END;
100万分频亦可采用电路图编辑方法将三个100进制计数器构成的分频器级联实现,由于现场测试时有时间要求,故采用文中所述的语言编辑方法实现分频。 3.1.2三十六进制加法计数器设计
根据要求需实现36进制循环计数,故采用电路图编辑的方法进行设计,采用集成四位同步二进制加法计数器74161及相应门电路构成,第一个74161的使能端ENT和ENP以及置数端CLRN均输入高电平,其进位端接到第二个74161的使能端ENT,两个片子的清零端LDN与00100011相连,从而实现0—35循环计数。时钟信号CLK由前述分频器输出信号提供,实现每秒增1计数。电路图如图3-1:
图3-1 三十二进制循环加法计数器
3.1.3七段译码器设计
由于实验仪上的七段数码管采用的是共阳极解法,故本七段译码器应对应共阳极连接的情况。该器件采用AHDL语言编辑中的真值表法进行设计较为简便,其程序如下:
SUBDESIGN C7_1duanyimaqi18 (
D0,D1,D2,D3,D4,D5,D6,D7: INPUT ; S0,S1,S2,S3,S4,S5,S6: OUTPUT;
4
可编程逻辑器件设计报告
)
VARIABLE
B0,B1,B2,B3,B4,B5,B6,B7:NODE; BEGIN B7=D7; B6=D6; B5=D5; B4=D4; B3=D3; B2=D2; B1=D1; B0=D0; TABLE
d[7..0] H\ H\ H\ H\ H\ H\ H\ H\ H\ H\ H\ H\ H\ H\ H\ H\ H\ H\ H\ H\ => S0,S1,S2,S3,S4,S5,S6; => 1, 1, 1, 0, 1, 1, 0; => 0, 0, 0, 0, 0, 0, 0; => 0, 0, 0, 0, 0, 0, 0; => 1, 1, 1, 1, 1, 1, 1; => 1, 1, 1, 1, 1, 1, 1; => 0, 0, 0, 0, 0, 0, 0; => 0, 0, 0, 0, 0, 0, 0; => 1, 1, 0, 0, 1, 1, 0; => 1, 1, 0, 0, 1, 1, 0; => 1, 1, 0, 0, 1, 1, 0; => 0, 0, 0, 0, 0, 0, 0; => 0, 0, 0, 0, 0, 0, 0; => 1, 1, 1, 1, 1, 1, 0; => 1, 1, 1, 1, 1, 1, 0; => 1, 1, 1, 1, 1, 1, 0; => 1, 1, 1, 1, 1, 1, 0; => 0, 0, 0, 0, 0, 0, 0; => 0, 0, 0, 0, 0, 0, 0; => 1, 1, 1, 0, 1, 1, 0; => 0, 0, 0, 0, 0, 0, 0;
5