基于fpga的洗衣机控制器veriloghdl语言描述的设计与开发内容摘要:

if(!Reset) begin H_L_f3=1。 end else if(Count == Delay10ms) begin H_L_f3=Key_in。 end end always @(posedge Clk or negedge Reset ) begin if(!Reset) begin H_L_f4=1。 end else begin H_L_f4=H_L_f3。 end end assign Key_out = H_L_f4 amp。 (~H_L_f3)。 endmodule 时钟分频模块的 设计 由于使用的 FPGA 的输入时钟是 20M hz,定时模块的自减频率是 1hz,因此需要进行分频得到 1hz 的时钟频率输入给定时模块。 时钟分频模块图如图 3: 时钟分频模块功能仿真图如图 4: 图 3 图 4 其 Verilog HDL 语言描述如下: module FrequencyDivider(Clk,Rst,ClkOut)。 input Clk,Rst。 output ClkOut。 reg [23:0] Count。 reg OutData。 reg Reset。 always @(posedge Clk ) //异步复位同步释放 begin Reset=Rst。 end always @(posedge Clk or negedge Reset) begin if(!Reset) begin Count=0。 OutData=0。 end else if(Count==2439。 d10_000_000) begin Count=0。 OutData=~OutData。 end 我们的爱情,我们的理想,我们的未来,我们的成长,我们的幸福 我们的爱情,我们的理想,我们的未来,我们的成长,我们的幸福 else begin Count=Count+139。 d1。 end end assign ClkOut=OutData。 endmodule 定时器 设定和自减 模块的设计 定时器设定和自减模块可以设定定时器的工作时间,通过输入的 1hz 的信号使定时器的值每秒自减 1,直至为 0。 其 定时器的值输出给 数码管译码 模块 和时序控制 模块。 定时器设定和自减模块图如图 5;定时器设定和自减模块功能仿真图如图 6: 图 5 图 6 其 Verilog HDL 语言描述如下: module KeySet(Clk,Clk_1hz,Rst,Start,UpKey,DownKey,SetTimer)。 input Clk,Clk_1hz,Rst,Start,UpKey,DownKey。 output [6:0] SetTimer。 reg [6:0] Timer。 reg [6:0] rTimer。 reg Reset。 always @(posedge Clk ) //异步复位同步释放 begin Reset=Rst。 end always @(posedge Clk or negedge Reset) begin if(!Reset) begin Timer=739。 d50。 end //定时时间赋初值 else if(Start) begin if(UpKey) begin Timer=Timer+139。 b1。 end else if(DownKey) begin Timer=Timer139。 b1。 end end // 时 间 减 一end 我们的爱情,我们的理想,我们的未来,我们的成长,我们的幸福 我们的爱情,我们的理想,我们的未来,我们的成长,我们的幸福 always @(posedge Clk_1hz) //1s 信号输入 begin rTimer=Timer。 if(!Start) begin if(rTimer==739。 d0) begin rTimer=0。 end //时间到 0保持以免错误 else begin rTimer=rTimer139。 b1。 end end//每秒减一 end assign SetTimer=rTimer。 endmodule 时序中心控制 模块的设计 时序控制模块由定时器送来的值来控制洗衣机控制器的工作方式,正转、反转、停转和报警。 时序 中心 控制模块 图如图 7; 时序 中心 控制模块 图 功能仿真 如图 8: 图 7 图 8 其 Verilog HDL 语言描述如下: module Center(Clk,Start,Rst,Forward,Back,Stop,Sound,SetTimer)。 input Clk,Start,Rst。 input [6:0]SetTimer。 output Back,Stop,Sound,Forward。 reg rBack,rStop,rSound,rForward。 reg [3:0] i。 reg [1:0] j。 reg [6:0] rSetTimer。 reg [24:0] num。 reg Reset。 always @(posedge Clk ) //异步复位同步释放 begin Reset=Rst。 end always @(posedge Clk or negedge Reset) be。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。