µÚËÄÕ µ¥Ôªµç·Éè¼Æ 4.1 ·ÖƵģ¿éµç·Éè¼Æ
¾§ÌåÕñµ´Æ÷Êǹ¹³ÉÊý×ÖʽʱÖӵĺËÐÄ£¬Õñµ´Æ÷µÄÎȶ¨¶È¼°ÆµÂʵľ«¶È¾ö¶¨ÁËÊý×ÖÖÓ¼ÆÊ±µÄ׼ȷ³Ì¶È£¬Ëü±£Ö¤ÁËʱÖÓµÄ×ßʱ׼ȷ¼°Îȶ¨¡£
ʯӢ¾§ÌåµÄÑ¡ÆµÌØÐԷdz£ºÃ£¬Ö»ÓÐijһƵÂʵãµÄÐźſÉÒÔͨ¹ýËü£¬ÆäËüƵÂʶεÄÐźžù»á±»ËüËùË¥¼õ£¬¶øÇÒ£¬Õñµ´ÐÅºÅµÄÆµÂÊÓëÕñµ´µç·ÖеÄR¡¢C×é¼þµÄÊýÖµÎ޹ء£Òò´ËÕâÖÖÕñµ´µç·Êä³öµÄÊÇ׼ȷ¶È¼«¸ßµÄÐźš£È»ºóÔÙÀûÓÃ·ÖÆµµç·£¬½«ÆäÊä³öÐźÅת±äΪÃëÐźţ¬Æä×é³É¿òͼÈçͼ4.1¡£
ʯӢ¾§Ìå Õñµ´µç· ·ÖƵµç· ÃëÐźŠͼ4.1 ÃëÐźŲúÉúµç·¿òͼ
±¾ÏµÍ³Ê¹Óõľ§ÌåÕñµ´Æ÷µç·¸øÊý×ÖÖÓÌṩÁËÒ»¸öƵÂÊÎȶ¨×¼È·µÄ20MHZµÄ·½²¨Ðźţ¬ÆäÊä³öÖÁ·ÖƵµç·¡£·ÖƵµç·µÄÂß¼¿òͼÈçͼ4.2Ëùʾ¡£
diviclkoclk1soclk2msinst8 ͼ4.2 ·ÖƵµç·ģ¿é
¾·ÖƵºóÊä³ö1HZµÄ±ê×¼ÃëÐźÅoclk1s¡¢500HZµÄ°´¼üÏûÈ¥¶¶Ðźš£¸ÃÄ£¿éµÄʱÐò·ÂÕæÍ¼Èçͼ4.3Ëùʾ£¬Âú×ãÉè¼ÆÒªÇó¡£
£±£¶
ͼ4.3 ·ÖƵģ¿é·ÂÕæÍ¼
4.2 Уʱ¿ØÖÆÄ£¿éµç·Éè¼Æ
4.2.1 °´¼üÏû¶¶
±¾Ä£¿éÓÃÓÚµ±Óа´¼ü°´ÏÂʱ£¬²ÉÓÃÈí¼þµÄ°ì·¨È¥³ý°´¼ü¶¶¶¯¡£Ä£¿éµÄʵÏÖ·½·¨ÊÇÏÈÅжÏÊÇ·ñÓа´¼ü°´Ï£¬ÈçÓа´¼ü°´ÏÂÔòÑÓʱһ¶Îʱ¼ä£¬´ý¶¶¶¯¹ýÈ¥Ö®ºóÔÙ¶ÁÐÐÏß״̬£¬Èç¹ûÈÔÓÐµÍµçÆ½ÐÐÏߣ¬ÔòÈ·¶¨Óа´¼ü°´Ï£¬È»ºó²úÉúÒ»¸öÓа´¼ü°´ÏµÄÐźš£¸ÃÄ£¿éÓÐÒ»¸öʱÖÓÊäÈë¶Ë¿Ú£¬ÊäÈëʱÖÓÐźÅÊÇ·ÖÆµ³öÀ´µÄ500HZµÄʱÖÓ£»ÓÐÒ»¸öÊäÈë¶Ë¿ÚÓëÐÐÏßÏàÁ¬£¬ÓÃÓÚÊäÈëÐÐÏß״̬£»Ò»¸öÊä³ö¶Ë¿Ú£¬ÓÃÓÚÊä³öÓа´¼ü°´ÏµÄÐźš£¸ÃÄ£¿éµÄÂß¼¿òͼÈçͼ4.4Ëùʾ¡£
ͼ4.4 Ïû¶¶Âß¼¿òͼ
¸ÃÄ£¿éÔÚÕâÀïʵÏֵıȽϼòµ¥£¬ÔÀíÊǵ±Óа´¼ü°´ÏµÄʱºò£¬inkey»á±ä³ÉµÍµçƽ£¬Èç¹û´Ëʱcount²»Îª30ʱ£¬ÄÚ²¿¼ÆÊýÆ÷¼ÆÊý£¬´Ó0Ö±µ½30£¬µ±¼ÆÊýµ½30ʱ£¬okeyÊä³öµ×µçƽ£¬Í¬Ê±¸ø¼ÆÊýÆ÷¸³ÖµÎª30¡£ÓÉÓÚ¼ÆÊýÂö³åΪ500HZ£¬¹Ê´ÓÓа´¼ü°´Ïµ½ÊäÈëÐźŲúÉú´ó¸ÅÐèÒª60ms¡£¶ø°´¼ü²úÉú¶¶¶¯µÄʱ¼ä´óÔ¼2msµ½10ms£¬ËùÒÔÒ»µ©¼ÆÊýÍê³É£¬¶¶¶¯ÒѾ¹ýÈ¥£¬²»»á·¢ÉúÖØ¼üÏÖÏóÁË£¬ÕâÑù¾ÍÈ¥
£±£·
³ýÁ˶¶¶¯¡£
¸ÃÄ£¿éµÄ·ÂÕæ²¨ÐÎÈçͼ4.5Ëùʾ¡£
ͼ4.5 °´¼üÏû¶¶Ä£¿é²¨ÐηÂÕæ
4.2.2 °´¼ü¿ØÖÆÄ£¿é
°´¼ü¿ØÖÆÄ£¿éµÄ¿òͼÈçͼ4.6Ëùʾ¡£
a
b
ͼ4.6 °´¼ü¿ØÖÆÄ£¿é
ͼ4.6ÖÐaͼÊÇ¿ØÖƷֵĸß룬µÍλÒÔ¼°Ð¡Ê±µÄ¸ßλµÄÄ£¿é£¬bͼÊÇ¿ØÖÆÐ¡Ê±µÄµÍλµÄÄ£¿é¡£inkeyÊÇÓÉÏû¶¶Ä£¿éÊä³öµÄÓмü°´ÏµÄÐźţ¬Õâ¸öÐźÅÒý·¢°´¼ü¿ØÖÆÄ£¿éÄÚ²¿Ðźŵı仯¡£oaddr[3..0]×÷ΪÊä³öÐźţ¬ÓÃÓÚ¿ØÖÆÊ±¼äµÄµ÷Õû¡£bͼÖеÄflagÊÇÅжÏСʱ¸ßλÊÇ1»¹ÊÇ2µÄÐźţ¬ÈôΪ1£¬ÔòflagÐźÅΪµÍµçƽ£»ÈôΪ2£¬ÔòflagÐźÅΪ¸ßµçƽ¡£
1.·ÖµÍλ°´¼ü¿ØÖƺËÐijÌÐòÈçÏ£º ENTITY addram IS
PORT
£¨inkey : IN STD_LOGIC;
oaddr : OUT STD_LOGIC_VECTOR£¨3 downto 0£©£©;
END addram;
ARCHITECTURE addram_architecture OF addram IS signal count:std_logic_vector£¨3 downto 0£©; BEGIN
£±£¸
oaddr<=count; k1:process£¨inkey£© begin
if rising_edge£¨inkey£© then
count<=count+1; if count=9 then
count<=\
end if;
end if; end process k1;
END addram_architecture; ˵Ã÷£º
ÿ°´¼üÒ»´Î£¬¼´Ã¿µ±inkeyµÄÉÏÉýÑØµ½À´Ê±£¬count¼ÓÒ»£¬µ±countµÈÓÚ9µÄʱºò£¬×÷Ϊ·ÖµÄµÍ룬½«0¸³ÖµÓÚcount£¬Ôڴ˹ý³ÌÖУ¬ËæÊ±½«Ê®½øÖÆÊýµÄcountµÄÖµµÄ8421Âë×÷ΪoaddrµÄÐźš£
¶ÔÓڷֵĸß룬½ö½«³ÌÐòÖеÄcount=9¸Ä³Écount=5¼´¿É£» ¶ÔÓÚСʱµÄ¸ß룬½ö½«³ÌÐòÖеÄcount=9¸Ä³Écount=2¼´¿É¡£ ¸ÃÄ£¿éµÄ·ÂÕæ²¨ÐÎÈçͼ4.7Ëùʾ¡£
ͼ4.7·ÖµÍλ°´¼ü¿ØÖÆÄ£¿é²¨ÐηÂÕæ
2.СʱµÍλ°´¼ü¿ØÖƺËÐijÌÐòÈçÏ£º ENTITY addram3 IS
PORT
£¨inkey : IN STD_LOGIC; flag : IN STD_LOGIC;
£±£¹
Ïà¹ØÍÆ¼ö£º