毕业论文:基于cpld的多功能数字钟设计内容摘要:

电压。 图 电源电路 电源电路是由电源变压器 T、桥堆、滤波电容 C1 C1 C1 C17 及集成三端稳压电路 7805 以及保险丝 组成,其电路图 如图 所示。 电源的输出为 +5V 输出。 本系统采用 7805 稳压电路 下面介绍电原各部分参数的整定方法: 1 变压器次极电压估算(以便选取合适的变压器): 由于稳压管要正常工作时输入端的电压必需要比输出端高 时才能使稳压管稳定工作。 考虑到市网交流电压的波动情况,在市网电压为 200V 时也能正常工作,则有220/200*Vac 要大于 ,所以 VAC 必需要大于 ,即交流变压器的负边输出电压应该高于 ,在本设计中选取 9V。 2 变压器输入功率的计算: 1. 假设负载电流为 500ma,若输出电压为 5V,则有效功率为 5V*=。 2. 正常情况下变压器输出功率约为 9V**=,当市网电压升到 250V 时,变压器的输出功率为 *250/220=。 3. 小型电源变压器的效率一般为 75%左右。 因此电源变压器的输入功率为。 3 虑波电容参数的选取: 1. 假设负载电流为 500ma,若输出电压为 ,则等效负载电阻为 15Ω。 2. 电源频率为 50HZ,则 T=0。 02S,根据 CRL=( 3~5) T/2,则 C=[( 3~5)T/2]/RL=2020~3300uF。 在本设计中取 2200uF。 3. 电容耐压应大于 *Vac 即 Vc=*9*250/220=(其中 250/220 是考虑市网电源电压过高时的情况。 在本设计中电容耐压值取 16V。 第 页 11西华大学课程设计说 明书 说明书 EPM7128SLC84 器件介绍 本次设计的核心器件采用 ALTERA公司的 CPLD可编程器件。 ALTERA公司的 MAX7000S系列 CPLD 有着较高的性价比。 MAX7000S 系列是基于 ALTERA 第二代 MAX 架构的高密度、高性能的 PLD器件。 MAX7000 器件 包含 32~256 个可联结成 16 个宏单元组的逻辑阵列块的宏单元。 EPM7128SLC84是 MAX7000S家族成员之一,它有如下的特点 :可用逻辑门个数为 2500门, 128 个宏单元, 8个逻辑陈列块,最大用户可用 I/O 口 100 个,支持 5V 在系统编程和符合 的 JTAG 下载接口,内建边界扫描测试电路,支持片上调试EPM7128SLC8415的封装图如图 所示 图 EPM7128SLC的 PLCC封装 第 页 12 西华大学课程设计说 明书 说明书 4 CPLD 编 程设计 整个系统输入、输出信号的定义: sysclk:系统的时钟信号,由外部有源晶振产生,频率为 ; mode:外接按键,模式选择信号, mode=0时为时钟模式, mode=1时为设定闹钟模式, mode=2时为手动设定时间模式; set:外接按键,用于在手动设置时间时选择是调整小时还是分钟;若长时间按住该键,还可以使秒信号清零,用于精确调整时间; change:外接按键,手动调整时间,每按一次计数器加 1;若长时间按住则连续快速加 1,用于快速调时和定时; alarm:接蜂鸣器,输出到蜂鸣器的信号,用于产生闹铃音和报时音;闹铃音为持续 20S 的急促的“嘀嘀嘀”音,整点报时音为“嘀嘀嘀 嘟”四短一长音; Dataout:输出信号,输出显示时间的数码管显示的段码。 `include `include `include `include `include `include `include `include module clock。 clk_generate clk_generate()。 //调用 时钟节拍产生模块 time_mode0 time_mode0()。 // 秒 、分、时计时与时间调整模块 mode_select mode_select()。 //调用 模式选择 功能模块 fast_settime fast_settime()。 //调用 快速时间设置功能模块 alarm_set alarm_set()。 //调用 闹铃时间设置模块 alarm alarm()。 //调用 闹铃与整点报时模块 decoder_7seg decoder_7seg()。 //调用 7 段译码模块 display display()。 //调用显示模块 endmodule 第 页 13 西华大学课程设计说 明书 说明书 时钟节拍产生模块 由于整个系统只有一个晶体振荡器,但是设计需要不同的时钟信号,因此需要设计一个分频进程,对系的的有源晶振产生的 时钟进行分频,产 生需要的时钟节拍。 在本设计中总共用到如下几个时钟节拍: 1HZ 的时钟 CLK, 4HZ 的时钟 CLK_4hz,1kHZ的时钟信号 CLK_1K,和 50HZ 的时钟 displayclk。 其中 CLK节拍用于产生秒计时信号,在每个 CLK 的上升沿到来时秒计数器加 1。 CLK_4hz 节拍用于快速调整时间,当长时间按下 CHANG 按键时,当前设置的时钟快速增加。 CLK_1k 节拍用于闹铃音的产生,displayclk 时钟节拍是频率为 50HZ 的信号,由于本设计中显示部分采用 LED 动态显示的方式,因此必需要有一个扫描信号对 6位的 LED的每 个位进行轮流选通点亮。 分频进程的原理是在 CPLD 内部设置一个分频计数器和一个触发器,当计数到分频值时触发器进行翻转,因此只要设置不同的分频计数器的计数值就可以得到不同的时钟节拍。 在CPLD 内部设置分频计数器的缺点是, CPLD 的 触发器资源有限,设置计数器对资源的占用比较大,因此尽量可能少用一些时钟节拍,或者尽量使需要使用的时钟节拍相同,还有一种方法是利用两个已有的时钟信号进行逻辑运算从面获得想要的时钟节拍。 系统的分频进程如下: module clk_generate(reset,sysclk,clk,clk_4hz,clk_1k,displayclk)。 input sysclk,reset。 output clk,clk_4hz,clk_1k,displayclk。 reg clk,clk_4hz,clk_1k,displayclk。 reg [20:0]div_count1。 //分频时钟计数器,用于产生周期为 1S 的时钟信号 reg [19:0]div_count2。 //分频时钟计数器,用于产生频率为 4hz 的时钟信号 reg [11:0]div_count3。 //分频时钟计数器,用于产生频率为 1Khz 的时钟信号 reg [14:0]divclk_t。 //分频时钟计数器,用于产生 50HZ 的数码管扫描信号 displayclk always @(posedge sysclk) begin if (reset) div_count1=2139。 d0000000。 if (div_count1==2139。 d1024000) //1024000/2048000= begin clk=~clk。 //clk 为周期为 1S 的时钟信号 第 页 14 西华大学课程设计说 明书 说明书 div_count1=2139。 d0000000。 end else begin div_count1=div_count1+139。 b1。 end end always @(posedge sysclk) begin if (reset) div_count2=2039。 d000000。 if (div_count2==2039。 d256000) //512020/2048000= begin clk_4hz=~clk_4hz。 //clk_4hz 为 4hz 的时钟信号 div_count2=2039。 d000000。 end else begin div_count2=div_count2+139。 b1。 end end always @(posedge sysclk) begin „„ //产生周期为 50HZ 和 1KHZ 的时钟节拍 end endmodule 第 页 15 西华大学课程设计说 明书 说明书 功能模块 本设计是多功能数字钟,实现的功能是 以数字形式显示时、分、秒的时间 , 能进行手动快校时、快校分或慢校时、慢校分。 该多功能电子共有 3种模式。 分别为:模式0为正常时钟模式,模式 1为设置闹铃功能,模式 2 为手动校时功能。 多功能电子钟共有三个按键,一个 MODE 模式选择键,用于选择相应的模式,一个 SET 时间选择键,用于选择当前设定的是分钟或者是小时 ,一个 CHANGE 键,用于给当前值加 1,当长时间按住 CHANGE 时当前值连续快速加 1,用于快速设定时间。 模式选择进程如下所示。 module mode_select( clk,mode,set,change,count1,counta,count2,countb,led_min,led_hour,m)。 input mode,set,change,clk。 output count1,counta,count2,countb,led_min,led_hour,m。 regbool,count1,counta,count2,countb。 reg [1:0]m。 reg led_min,led_hour。 always @(posedge mode) begin if (m==2) m=0。 else m=m+1。 end always @ (posedge set) bool=~bool。 always @ (posedge clk) begin case(m) 2: begin if (bool) begin //手动设定分钟 count1=change。 {led_min,led_hour}=239。 b10。 end else begin //手动设定小时 第 页 16 西华大学课程设计说 明书 说明书 counta=change。 {led_min,led_hour}=239。 b01。 end {count2,countb}=239。 b00。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。