资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
module jsq(clk,keyin,keyout,leda,ledb,num3);inputclk;input3:0keyin;output3:0keyout;reg3:0keyout;output3:0leda;reg3:0leda;output3:0ledb;reg3:0ledb;integer clk_klv;output31:0num3;always (posedge clk)/分频clk_klv=clk_klv+1;reg1:0keyhang=0;/按键扫描reg3:0keynum=0;/最近按键的值regkeyen=0;/按键锁定作用,每次都必须重新按下才有效regkeysign=0;/当前按键的属性,0代表数字,1代表 +-*/=复位reg7:0delay=0;/按键消抖regorder2=0;/作用:延迟一个时钟,keyen跳变输出,确保keynum被赋值always (posedge clk_klv10)beginif(order2=0)begincase(keyhang,keyin)6b00_1110: begin delay=0;if(keyen=0)begin keysign=0;keynum=4h0;order2=1;end end6b00_1101: begin delay=0;if(keyen=0)begin keysign=0;keynum=4h1;order2=1;end end6b00_1011: begin delay=0;if(keyen=0)begin keysign=0;keynum=4h2;order2=1;end end6b00_0111: begin delay=0;if(keyen=0)begin keysign=0;keynum=4h3;order2=1;end end6b01_1110: begin delay=0;if(keyen=0)begin keysign=0;keynum=4h4;order2=1;end end6b01_1101: begin delay=0;if(keyen=0)begin keysign=0;keynum=4h5;order2=1;end end6b01_1011: begin delay=0;if(keyen=0)begin keysign=0;keynum=4h6;order2=1;end end6b01_0111: begin delay=0;if(keyen=0)begin keysign=0;keynum=4h7;order2=1;end end6b10_1110: begin delay=0;if(keyen=0)begin keysign=0;keynum=4h8;order2=1;end end6b10_1101: begin delay=0;if(keyen=0)begin keysign=0;keynum=4h9;order2=1;end end6b10_1011: begin delay=0;if(keyen=0)begin keysign=1;keynum=4ha;order2=1;end end6b10_0111: begin delay=0;if(keyen=0)begin keysign=1;keynum=4hb;order2=1;end end6b11_1110: begin delay=0;if(keyen=0)begin keysign=1;keynum=4hc;order2=1;end end6b11_1101: begin delay=0;if(keyen=0)begin keysign=1;keynum=4hd;order2=1;end end6b11_1011: begin delay=0;if(keyen=0)begin keysign=1;keynum=4he;order2=1;end end6b11_0111: begin delay=0;if(keyen=0)begin keysign=1;keynum=4hf;order2=1;end enddefault: begin keyhang=keyhang+1;delay=delay+1;if(delay=100)keyen=0;endendcasecase(keyhang)0:keyout=4b1110;1:keyout=4b1101;2:keyout=4b1011;3:keyout=4b0111;endcaseendelsebegin keyen=1;order2=0;endendreg 2:0order=0;/当前状态integernum1=0,num2=0,num3=0;/第一个,第二个,结果reg 3:0sign;/+-*/reg7:0lednum=100;/显示的数字reg3:0in_num=0;/限制显示的数字位,限制在2为:099always (posedge keyen)begincase(order)0:if(keysign)begin sign3:0=keynum3:0;order=order+1;in_num=0;end/在没有按下+-*/之前会存储数字else if(num110000)begin num1=num1*10+keynum;lednum=num1; in_num=in_num+1;end1:if(keysign)begin case(sign)/在没有按下=号之前会存储数字4ha:num3=num1+num2;4hb:num3=num1-num2;4hc:num3=num1*num2;4hd:num3=num1/num2;endcaselednum=num3+0;order=order+1;end else if(num210000)begin num2=num2*10;num2=num2+keynum;lednum=num2;in_num=in_num+1;endendcaseif(keynum=4hf)begin order=0;num1=0;num2=0;num3=0;lednum=100;end/复位endalways (*)/显示函数if(lednum=99)beginleda=lednum/10;ledb=lednum%10;endelsebeginleda=15;ledb=15;endendmodule
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号