Verilog课程设计-洗衣机设计电路

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Verilog课程设计----洗衣机控制器设计要求:设计一个电子定时器,控制洗衣机作如下运转:定时启动---正转20秒--暂停10秒--反转20秒--暂停10秒--定时未到,回到“正转20秒--暂停10秒--反转20秒--暂停10秒”;若定时到,则停机发出音响信号。用两个数码管显示洗涤的预置时间(分钟数),按倒计时的方式计时,直到时间到停机;洗涤过程由“开始”信号开始。三只LED灯表示“正转”、“反转”、“暂停”三个状态。设计过程中用三个表示状态的寄存器zz(正转)、fz(反转)、pause(暂停),以及三个寄存器表示LED灯,LED1表示zz;LED2表示fz;LED3表示pause。用data_out1,data_out2显示预置时间。Beep为音响信号。实验源程序如下:`timescale1ns/1ns//源程序的测试文件moduletb_wash;parameterDELY=5;regclk,start,sure;reg[6:0]count0;wirebeep,led1,led2,led3,zz,fz,pause;wire[6:0]data_out1,data_out2;washC1(data_out1,data_out2,beep,led1,led2,led3,zz,fz,pause,start,count0,sure,clk);initialbeginstart=0;sure=0;count0=7'b0000111;#DELYstart=1;#(DELY*10)sure=1;#(DELY*20)sure=0;endalwaysbeginclk=0;#(DELY*2)clk=~clk;#(DELY*2)clk=~clk;//产生振荡时钟endinitial#(DELY*3000)$finish;endmodulemodulewash(data_out1,data_out2,beep,led1,led2,led3,zz,fz,pause,start,count0,sure,clk);inputclk,sure;//sure用于输入数据之后的确定键,确定后洗衣机开始工作input[6:0]count0;//count0输入洗涤时间inputstart;//电源开关output[6:0]data_out1,data_out2;//数码管时间输出reg[6:0]data_out1,data_out2;outputzz,fz,pause;regzz,fz,pause;outputled1,led2,led3;regled1,led2,led3;reg[5:0]counts;outputbeep;//音响regbeep;reg[6:0]count;//计数分钟reg[3:0]countm;//计数秒wire[3:0]bcd_1;reg[3:0]bcd_2;regsignal;//用于控制音响信号initialbegindata_out1=7'b0;data_out2=7'b0;counts=6'b0;countm=4'b0;count=count0;bcd_2=4'b0;zz=0;fz=0;pause=0;beep=0;led1=0;led2=0;led3=0;signal=0;endalways@(posedgeclk)beginif(sure==1)beginsignal=1;count=count0;//对count赋初值endif((count0)&&(start==1)&&(signal==1))beginif(counts==6'b111100)//60begincounts=6'b1;count=count-1;endelsebegincounts=counts+1'b1;if(counts=5'b10100)//20beginzz=1;fz=0;pause=0;led1=1;led2=0;led3=0;endelseif(counts=6'b11110|counts6'b110010&&counts=6'b111011)//3050~59beginpause=1;zz=0;fz=0;led2=1;led1=0;led3=0;endelsebeginfz=1;zz=0;pause=0;led3=1;led1=0;led2=0;endendendif(signal==1&&count==0)//控制洗涤结束时音响响的时间beginif(countm==4'b1001)beep=0;elsebegincountm=countm+1;beep=1;led2=0;pause=0;endendend//always//showthenumberalways@(count)beginif(count=7'd90)bcd_2=4'd9;elseif(count=7'd80)bcd_2=4'd8;elseif(count=7'd70)bcd_2=4'd7;elseif(count=7'd60)bcd_2=4'd6;elseif(count=7'd50)bcd_2=4'd5;elseif(count=7'd40)bcd_2=4'd4;elseif(count=7'd30)bcd_2=4'd3;elseif(count=7'd20)bcd_2=4'd2;elseif(count=7'd10)bcd_2=4'd1;elsebcd_2=4'd0;endassignbcd_1=count-bcd_2*4'd10;always@(bcd_1)//数码管个位的显示begincase(bcd_1)4'b0000:data_out1=7'b0111111;//04'b0001:data_out1=7'b0000110;4'b0010:data_out1=7'b1011011;4'b0011:data_out1=7'b1001111;4'b0100:data_out1=7'b1100110;4'b0101:data_out1=7'b1101101;4'b0110:data_out1=7'b1111100;4'b0111:data_out1=7'b0000111;4'b1000:data_out1=7'b1111111;4'b1001:data_out1=7'b1100111;default:data_out1=7'b0000000;endcaseendalways@(bcd_2)//数码管十位的显示begincase(bcd_2)4'b0000:data_out2=7'b0111111;//04'b0001:data_out2=7'b0000110;4'b0010:data_out2=7'b1011011;4'b0011:data_out2=7'b1001111;4'b0100:data_out2=7'b1100110;4'b0101:data_out2=7'b1101101;4'b0110:data_out2=7'b1111100;4'b0111:data_out2=7'b0000111;4'b1000:data_out2=7'b1111111;4'b1001:data_out2=7'b1100111;default:data_out2=8'b0000000;endcaseendendmodule程序编号之后在linux系统的nclaunch里面仿真出来波形如下:波形符合设计的要求。仿真结束后到linux系统里面DC里面综合,综合的电路图如下:综合后会有检查综合结果报表——AREA。面积报表中包含了综合之后的各个模块的面积,报表如下:综合之后保存wash_post.v文件。利用测试文件对其进行后仿真,仿真的波形如下图由于是后仿真,综合的时候考虑的各个门级之间时间延迟,所以后综合的时间延迟包含了从输入到输出的总的时间延迟。产生的时间报表如下综合之后保存文件为.v文件,文件将保存综合出来之后的具体门级电路形式,综合之后产生的门级网表:moduleSNPS_CLOCK_GATE_HIGH_wash_0(CLK,EN,ENCLK);inputCLK,EN;outputENCLK;wirenet58,net60,net61,net64;assignnet58=CLK;assignENCLK=net60;assignnet61=EN;AND2HD4Xmain_gate(.A(net64),.B(net58),.Z(net60));LATNHDLXlatch(.D(net61),.GN(net58),.Q(net64));endmodulemoduleSNPS_CLOCK_GATE_HIGH_wash_3(CLK,EN,ENCLK);inputCLK,EN;outputENCLK;wirenet58,net60,net61,net64;assignnet58=CLK;assignENCLK=net60;assignnet61=EN;AND2HD4Xmain_gate(.A(net64),.B(net58),.Z(net60));LATNHDLXlatch(.D(net61),.GN(net58),.Q(net64));endmodulemoduleSNPS_CLOCK_GATE_HIGH_wash_2(CLK,EN,ENCLK);inputCLK,EN;outputENCLK;wirenet58,net60,net61,net64;assignnet58=CLK;assignENCLK=net60;assignnet61=EN;AND2HD4Xmain_gate(.A(net64),.B(net58),.Z(net60));LATNHDLXlatch(.D(net61),.GN(net58),.Q(net64));endmodulemoduleSNPS_CLOCK_GATE_HIGH_wash_1(CLK,EN,ENCLK);inputCLK,EN;outputENCLK;wirenet58,net60,net61,net64;assignnet58=CLK;assignENCLK=net60;assignnet61=EN;AND2HD4Xmain_gate(.A(net64),.B(net58),.Z(net60));LATNHDLXlatch(.D(net61),.GN(net58),.Q(net64));endmodulemodulewash(data_out1,data_out2,beep,led1,led2,led3,zz,fz,pause,start,count0,sure,clk);output[6:0]data_out1;output[6:0]data_out2;input[6:0]count0;inputstart,sure,clk;outputbeep,led1,led2,led3,zz,fz,pause;wireN7,N10,N11,N12,N13,N14,N15,N16,N18,N25,N26,N27,N28,N29,N30,N31,N40,N41,N42,N43,N44,N45,N46,N47,N48,N49,N53,N54,N55,N58,N59,N60,N95,N96,N97,N158,N175,N177,N178,N179,N180,N181,N182,net70,net75,net80,net85,\add_48_aco/carry[5],\add_48_aco/carry[4],\add_48_aco/carry[3],\add_48_aco/carry[2],\mult_add_48_aco/PROD_not[0],\mult_add_48_aco/PROD_not[1],\mult_add_48_aco/PROD_not[2],\mult_add_48_aco/PRO

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功