EDA电磁炉

  • 格式:doc
  • 大小:321.50 KB
  • 文档页数:15

目 录

第1章 设计说明 ............................................................ 1

1.1设计思路 ............................................................. 1

1.2 模块介绍 ............................................................. 1

1.3真值表 ............................................................... 2

第2章 Verilog HDL设计源程序 ............................................. 3

第3章 波形仿真 ........................................................... 7

第4章 管脚锁定及硬件连线 ................................................. 10

4.1 管脚锁定 ............................................................ 10

4.2硬件连线 ............................................................ 10

第5章 总结 ............................................................... 12

第6章 参考文献 ........................................................... 13

燕 山 大 学 课 程 设 计 说 明 书

共 16 页 第 1 页 第1章 设计说明

1.1设计思路

本设计要求用3个拨码开关控制电磁炉低温到高温5个档,其中1表示最低温,5表示最高温,用动态数码管显示温度档1-5。用3个拨码开关控制电磁炉定时时间,分别定时5分钟、10分钟和30分钟。用数码管跟踪时间变化,定时结束时,用蜂鸣器发出蜂鸣,蜂鸣3秒。如图所示,前两位表示的是所选档位为4档,后两位表示所选择的

定的时间为30分钟。

在实验中分别使用了频率为1和频率为1024的时钟信号,在频率为1的时钟信号内使用60进制的加法计数器,使得每隔60秒,动态数码管表示的时间自减1,当时间减为零时,蜂鸣器为高电平,开始蜂鸣,在频率为1的时钟信号内还有一个3进制的加法计数器,进而使蜂鸣时间为3秒,然后蜂鸣停止。在频率为1024的时钟信号内,通过适当速度的对位选信号的扫描和人的视觉残留效应,使得在3个数码管上同时显示3个数字,通过段选信号和位选信号的对应,则在前两个数码管上显示定时时间变化,在第三个数码管上显示所选择的低高温档位,此档位由三个拨码开关控制。此外还有一个附加的功能,使此程序可以随时置零,当复位开关打到高电平时,动态数码管显示的所有数值均为0.打到低电平是,则可以正常实现上述功能。

1.2 模块介绍

本实验用了一个模块完成,其中两个时钟频率CLK,CP.七个拨码开关,其中开关sw1到sw3控制五个档位,sw4到sw6控制所选择的定时时间,并且倒计时,CLK是以1s为周期的时钟信号,经过60进制的加法计数器后变为每隔1分钟计时器减1,CP为以1024Hz为频率的时钟信号,此时钟信号对位选信号进行扫描,然后对应时钟信号进行段选,则对应的位置将显示出应该显示的数字。以1秒为周期的时钟信号内还有一个3进制的加法计数器,使得当倒计时到达0时,蜂鸣3s。此外sw7为附加的开关,当开关置为0时,所有的信息都为零,以实现紧急置停。此模块中有11输出,其中SS0到SS2为动态数码管的位选信号,G0到G6为所对应的段选信号。以实现数码管的输出。

本实验中将用到拨码开关,蜂鸣器和动态数码管。其中将用到7个拨码开关,其中3个用来实现档位控制,3个用来实现定时功能,还有一个用来实现紧急置零。蜂鸣器作为定时结束时的提醒,动态数码管用来显示所选档位和定时时间。 燕 山 大 学 课 程 设 计 说 明 书

共 16 页 第 2 页

1.3真值表

十进制计数器

CLK Q_TEMP[3:0]

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

0000

七段数码管

A3A2A1A0 G6G5G4G3G2G1G0

0000 0111111

0001 0000110

0010 1011011

0011 1001111

0100 1100110

0101 1101101

0110 1111101

0111 0000111

1000 1111111

1001 1101111

燕 山 大 学 课 程 设 计 说 明 书

共 16 页 第 3 页 第2章 Verilog HDL设计源程序

本次课程设计的Verilog HDL源程序如下:

module diancilu1(SS,A,CP,G,R0,R1,R2,CLK,D,FUWEI); //SS是位选信号 A是五个控制端输入信号 CP是数码管的时钟周期 R是控制定时的3个开关 D代表蜂鸣信号

input CP,R0,R1,R2,CLK,FUWEI;

input[2:0]A;

output[6:0]G;

output[1:0]SS;

output D;

reg D;

reg[2:0]SS;

reg[1:0]SS_TEMP;

reg[3:0]OUT;

reg[6:0]G;

reg[3:0]P;

reg[3:0]Q;

reg[3:0]C;

reg[3:0]Q_TEMP;

reg[3:0]C_TEMP;

reg[5:0]P_TEMP;

reg[1:0]M_TEMP;

always@(posedge CLK)

begin

if(FUWEI) //CLK是以1s为周期的始终信号

begin

if(R0||R1||R2) //当R0,R1,R2为1时置位

begin

if(R0)

begin

P_TEMP<='b000000;

Q_TEMP<='b0101;

C_TEMP<='b0000;

M_TEMP<='b01;

end

else if(R1)

begin

P_TEMP<='b000000;

Q_TEMP<='b0000; 燕 山 大 学 课 程 设 计 说 明 书

共 16 页 第 4 页 C_TEMP<='b0001;

M_TEMP<='b01;

end

else if(R2)

begin

P_TEMP<='b000000;

Q_TEMP<='b0000;

C_TEMP<='b0011;

M_TEMP<='b01;

end

end

else

begin

begin

P_TEMP<=P_TEMP+1; //60进制计数器

if(P_TEMP=='b111011)

begin

P_TEMP<=P_TEMP-'b111011;

if((Q_TEMP||C_TEMP)) //每分钟数码管上的数减1.,当两位都为0时停止自减

begin

if(Q_TEMP>'b0000)

Q_TEMP<=Q_TEMP-1;

else if(Q_TEMP=='b0000)

begin

Q_TEMP<=Q_TEMP+'b1001;

C_TEMP<=C_TEMP-1;

end

end

end

end

begin

if(D=='b1) //3进制加法计数器,当蜂鸣开始时由1数到3

M_TEMP<=M_TEMP+1;

end

end

end

else

begin 燕 山 大 学 课 程 设 计 说 明 书

共 16 页 第 5 页 Q_TEMP<='b0000;

C_TEMP<='b0000;

end

end

always

begin

begin

Q<=Q_TEMP;

C<=C_TEMP;

end

end

always@(A)

begin

if(FUWEI) //如果FUWEI为1,则实现所有功能

begin

case(A) //用开关控制所选档位

1:P='b0001;

2:P='b0010;

3:P='b0011;

4:P='b0100;

5:P='b0101;

default:P='b0000;

endcase

end

else P='b0000;

end

always@(negedge CP) //CP为频率为1024Hz的时钟信号

begin //位选信号按周期扫描

if(SS_TEMP<'b010)