数电课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数电课程设计报告 Document number【SA80SAB-SAA9SYT-SAATC-SA6UT-SA18】

《基于FPGA的洗衣机电机正反转控制

器》

学院:信息与控制工程学院

专业:电子信息工程

班级:

姓名:

学号:

2014年7月

目录

1.设计任务与要求........................................................ . (1)

2.设计思路........................................................ (1)

3.设计原理及方案....................................................................... (2)

4.总结与讨论........................................................................... (14)

一、设计任务及要求:

1.控制洗衣机的电机作如下周期性运转,正转4S――暂停2S――反转4S――暂停2S,用8位七段数码管显示自己学号的后四位(显示在从左边数第一个到第四个数码管上)、定时时间(两位,单位:分钟,显示在第五个和第六个数码管上),剩余时间(两位,单位:分钟,显示在第七个和第八个数码管上

2.洗衣机控制器的工作过程为:

(1)上电后显示自己学号的后四位,在运行中不变;初始洗涤时间为10分钟,在开始前可用S1和S2按键设置总的工作时间,确定洗衣机控制器定时工作时间。(按下并松开S1定时时间增加一分钟,按下并松开S2定时时间减少一分钟,时间范围为:00~30分钟)

(2)设定好定时时间后,按下并松开S3(按下时S3=0,松开时S3=1),启动控制器,整个系统开始运行;再次按下并松开S3,停止运行;再次按下并松开S3继续运行;按下并松开S4则回到上电初始状态。其他两个按键不起作用。到达定时时间后,停止运行,按下并松开S4则回到初始状态,在运行中要显示定时时间和剩余工作时间,当剩余时间为0时,要显示“End”。在工作过程中用三个LED指示灯指示电机工作状态,正转D1灯亮,反转D2灯亮,暂停D3灯亮,如此反复直至工作时间为0停止(三个LED灯都不亮)。

系统总体框图如下:

二、设计思路

为了便于计时,首先把1000Hz的外部时钟分频为1Hz。正转时间设为4s,反转设为4s,暂停设为2s,令洗衣机按照正转4s、暂停2s、反转4s、暂停2s 的顺序进行旋转,周期恰好为10秒,而定时时间单位为分钟,因此需要设计分钟计数器和秒计数器。开发板提供的时钟信号CP频率为1000Hz,应该设计一分频器得到1Hz的时钟信号作为时间计数脉冲。

设计中七段数码管采用动态扫描的方式显示,扫描需要一个比较高频率的信号,本次设计选用1000HZ。为了得到1000Hz信号,必须对输入的时钟信号

50MHZ进行分频。显示模块共用10个管脚,其中7个用于连接8个数码管的七段LED,还有3个管脚用于选择点亮哪个数码管,每隔很短的一段时间8个数码管交替点亮,依次循环,动态显示,由于人眼的视觉残留,可以观察到连续的测量计数器的计数值。其原理框图如图所示:

本系统采用层次化、模块化的设计方法,设计顺序为自下向上。首先实现系统框图中的各子模块,然后由顶层模块调用各子模块(既可以采用原理图,也可以采用Verilog HDL语言)来完成整个系统。

三、设计原理及方案

1.洗衣机点击正反转控制器的设计由由分频模块,模八计数器模块,s1s2s3s4控制电路模块,32位信号产生模块,数据选择器模块,数码管显示模块组成。FPGA接收命令,控制洗衣机的正转、反转、停机和定时时间为0时显示End的工作状态。对FPGA芯片的编程采用模块化的Verilog HDL (硬件描述语言)进行设计。顶层使用原理图实现,底层由Verilog HDL语句实现。

(1)总体框图

(2)功能实现

2.分频器50MHz到1KHz

本模块实现对50MHz到1KHz的分频,1KHz的信号为模八计数器提供时钟信号。

(1)源程序

module lrfenpinqi50M(clk_50M,clk_1000);

input clk_50M;

output clk_1000;

reg clk_1000;

reg [15:0]cnt;

always@(posedge clk_50M)

begin

if(cnt==16'd24999)

begin

clk_1000<=~clk_1000;

cnt<=0;

end

else

cnt<=cnt+1;

end

endmoduleendmodule

(2)元器件

(3)功能仿真

3.分频器1KHz到1Hz

本模块实现对1KHz到1Hz的分频,1KHz的信号为s1s2s3s4控制电路提供时钟信号。

(1)源程序

module lrfenpinqi1000(clk_1000,clk_1);

input clk_1000;

output clk_1;

reg clk_1;

reg [15:0]cnt;

always@(posedge clk_1000)

begin

if(cnt==16'd499)

begin

clk_1<=~clk_1;

cnt<=0;

end

else

cnt<=cnt+1;

end

endmodule

(2)元器件

(3)功能仿真

4.模八计数器

本模块实现显示数码管的动态扫描。如果采用静态显示,则需要56根线实现,动态则只需要10根。其输出还作为数据选择器的SEL端输入。

(1)源程序

module lrjishuqi(cp,q);

input cp;

相关文档
最新文档