µç×ÓÉè¼Æ×Ô¶¯»¯ÊµÑéÖ¸µ¼
cnt3=0;
else cnt3=cnt3+1'b1; end
/******************************** *ÊýÂë¹Ü¶¯Ì¬É¨Ãè
********************************/ always@(cnt3,timed) begin case(cnt3) end
/******************************** *7¶ÎÒëÂë
********************************/ always@(data) begin case(data) 0:seg7=7'b0111111; 1:seg7=7'b0000110; 2:seg7=7'b1011011; 3:seg7=7'b1001111; 4:seg7=7'b1100110; 5:seg7=7'b1101101; 6:seg7=7'b1111101; 7:seg7=7'b0000111; 8:seg7=7'b1111111; 9:seg7=7'b1101111; default:seg7=7'b0000000; endcase end endmodule
0:begin data<=timed[3:0];scan<=4'b0001;end 1:begin data<=timed[7:4];scan<=4'b0010;end 2:begin data<=timed[11:8];scan<=4'b0100;end 3:begin data<=timed[15:12];scan<=4'b1000;end default:begin data=timed[3:0];scan=4'b0000;end
endcase
±àÒë³É¹¦ºó£¬½øÐÐÒý½ÅËø¶¨²¢ÏÂÔØ£¬¹Û²ìʵÑéÏÖÏó¡£
±í4.1 Òý½ÅËø¶¨¶ÔÓ¦±í
clk 183 scan[0] scan[1] scan[2] scan[3] 170 172 173 174 39
µç×ÓÉè¼Æ×Ô¶¯»¯ÊµÑéÖ¸µ¼
ÐøÉϱí
seg7 [0] seg7 [1] seg7 [2] seg7 [3] seg7 [4] seg7 [5] seg7 [6] 175
176 177 179 180 186 187 Îå¡¢ ʵÑéÒªÇó˵Ã÷
±¾´úÂëΪ×î»ù±¾µÄ¼òÒ×ʱÖÓ¡£×öÍê´Ë»ù´¡²¿·Ö°´ÒÔÏÂÒªÇóÐ޸ĴúÂ룬²¢ÖØÐÂÏÂÔØ¡£ 1. ÒªÇó¸ø³ö³õÖµ59·Ö45Ã룬¹Û²ì15ÃëºóÊÇ·ñ±äΪ00,00. Ìáʾ£¬¿ÉÔö¼ÓÒ»¸ö¸´Î»ÐÅ
ºÅ£¬µ±¸´Î»Ê±£¬³õÖµÉèΪ59·Ö45Ã룬µ±È»Ò²¿ÉÒÔ²»Óø´Î»Ðźţ¬Ö±½Ó¸øÒ»¸ö³õʼֵ¡£
2. ¼ÓÈëСʱ£¬Í¬Ê±ÏÔʾʱ·ÖÃë¡£
3. ¼ÓÈëµ÷·Öµ÷ʱÐźţ¬¿ÉÒÔʵÏÖµ÷·Ö¼°µ÷ʱ¡£
×¢£º¼ÓÈëСʱ£¬²Î¿¼ÏÂÃæµÄÊýÂë¹ÜµÄÒý½Å¡£´ËʱÔÚÍⲿÐźÅÖÐÒªÔÙ¼ÓÈëÒ»¸ö7¶ÎÂëµÄÊä³öÐźţ¬Èçsegh7£¬Í¬ÑùÊÇ7λ¡£
SEG7¡ª¡ªSEG10µÄ¹²Òõ¹«¹²¶ËG¾·´ÏòÆ÷·Ö±ðÓëCPLDµÄ¶ÔÓ¦¹Ü½Å 190,P191,P192,P193ÏàÁ¬£¬ÓÉÆä¿ØÖÆÊµÏÖ¸÷λ·Öʱѡͨ£¬¶¯Ì¬É¨Ãè¡£SEG7¡ª¡ªSEG10(a,b,c,d,e,f,g,p)µÄ¸÷¶ÎÓëCPLDÒý½ÅµÄ¶ÔÓ¦¹ØÏµÎª£ºP195¡¢P196¡¢P197¡¢P198¡¢P199¡¢P200¡¢P202¡¢P203¡£
Áù¡¢ ±¨¸æÒªÇó
1. ¸ø³öÊý×ÖʱÖÓÉè¼ÆµÄÔÀí¡£
2. ÒªÇó¸ø³ö¾ßÌåʱÖÓ¼ÇʱµÄ´úÂëºÍÒý½ÅËø¶¨¶ÔÓ¦µÄ±í¸ñ¡£ 3. д³öʵÑéÏÖÏ󣬲¢¶ÔÏÖÏó½øÐбØÒªµÄ·ÖÎö
40
µç×ÓÉè¼Æ×Ô¶¯»¯ÊµÑéÖ¸µ¼
ʵÑéÎå ¼òÒ×Ê®×Ö·¿Ú½»Í¨µÆ
Ò»¡¢
ʵÑéÄ¿µÄ
1. ѧϰ²¢ÕÆÎÕ״̬»úµÄÓ²¼þÓïÑÔÃèÊö·½·¨¡£ 2. ÕÆÎÕ×ÛºÏÐÔverilog´úÂëÉè¼Æ·½·¨¡£
¶þ¡¢ ʵÑéÒÇÆ÷É豸
1. PC»úһ̨
2. QUARTUS¢ò CPLDÈí¼þ¿ª·¢ÏµÍ³Ò»Ìס£
Èý¡¢ ʵÑéÔÀí
λÓÚÊ®×Ö·¿ÚµÄ½»Í¨µÆ£¬ÔÚA·½ÏòºÍB·½Ïò¸÷Óк졢»Æ¡¢ÂÌÈýÕµµÆ£¬Ã¿10Ãë±ä»»Ò»´Î¡£±ä»»Ë³ÐòÈçÏÂ±í£º
״̬ͼÈçÏ£º
ËÄ¡¢
ʵÑé²Î¿¼´úÂë
±¾´úÂëΪ״̬»úµÄºËÐÄ´úÂë
module jtd(clk,rst,out); input clk,rst; output[5:0]out;
parameter s0=0,s1=1,s2=2,s3=3;
41
µç×ÓÉè¼Æ×Ô¶¯»¯ÊµÑéÖ¸µ¼
reg[5:0]c_state,next_state,out;
always@(posedge clk, posedge rst)begin if(rst)c_state<=s0;
else //½«µÚÈý¶Î´úÂë¼ÓÈëµ½´Ë´¦£¬×¢ÒâÉÏÃæµÄÃô¸ÐÐźÅclkÒªÏàÓ¦µØ¸ÄΪclk1hz; c_state<=next_state; end
always@(c_state)begin case(c_state)
s0:begin next_state<=s1;out<=6'b010100;end s1:begin next_state<=s2;out<=6'b001100;end s2:begin next_state<=s3;out<=6'b100010;end s3:begin next_state<=s0;out<=6'b100001;end endcase end endmodule
±¾´úÂëΪ·ÖƵ´úÂë
always @ (posedge CLK_40M) begin
if(cnt1==19999999) begin cnt1<=0; clk1hz<=~clk1hz; end else
cnt1<=cnt1+1; end
±¾´úÂëΪ10Ãëµ¹¼ÆÊ±´úÂë
always @ (posedge clk1hz) begin if(cnt2==0) begin cnt2<=10; else
cnt2<=cnt2-1; end
Ìáʾ£º
¿É½«µÚÈý¶Î10Ãëµ¹¼ÆÊ±²¿·Ö¼ÓÈëµ½µÚÒ»¶Î״̬»úµÄºËÐÄ´úÂëÖУ¬¼´¼ÓÈ뵽״̬»úµÄʱÐò¹ý³ÌÖС£
±àÒë³É¹¦ºó£¬½øÐÐÒý½ÅËø¶¨²¢ÏÂÔØ£¬¹Û²ìʵÑéÏÖÏó¡£
42
Ïà¹ØÍÆ¼ö£º