¡¾¼¼Êõ·ÖÏí¡¿FPGAÔÓ¼ÇÖ®»ù´¡Æª¶þ¼°Demo°¸Àý
·¢²¼Ê±¼ä2021-01-19
·ÖÏí
ǰÑÔ
±¾ÎĽÓÐøÉÏһƪ¡¶FPGAÔӼǻù´¡Æª¡·£¬¼ÌÐøÎª´ó¼Ò·ÖÏíIPÀý»¯ºÍ¼¸¸ö»ùÓÚFPGAоƬʵÏÖµÄDemo¹¤³Ì¡£
IPÀý»¯
IP¼´ÊÇÒ»¸ö·â×°ºÃµÄÄ£¿é£¬¼¯³ÉÔÚÏàÓ¦µÄ¿ª·¢»·¾³ÀïÃæ£¬ÒÔ°²Â·µÄTDÈí¼þΪÀý£¬²»Í¬ÏµÁеÄоƬ¼¯³ÉÁ˲»Í¬µÄIPÄ£¿é£¬¿ÉÒÔͨ¹ýÈí¼þÀý»¯µ÷Óá£
ÒÔÏÂÊǰ²Â·TD4.6.5¼¯³ÉµÄEF3L40CG332BµÄÏà¹ØIP¡£

1.1 PLL&RAM
ÒÔÀý»¯PLLºÍRAMΪÀý£¬ÊµÏÖÁ½¸öÒ첽˫¿Ú RAM¡£
¶ÁдʱÖÓ¶¼ÉèÖà 100Mhz£¬ Á½¸ö RAM Ϊ RAMA ºÍRAMB£¬ Éî¶ÈΪ 1024£¬Î»¿íΪ 8bit£¬Ð´ÈëÊý¾ÝΪ 8bit£¬100Mhz ³ÖÐøÊý¾ÝÁ÷£¬ µ± RAMA±»Ð´Èë 1024 ×Ö½ÚÊý¾ÝºóÇл»µ½Ð´ RAMB£¬ RAMB ±»Ð´Èë 1024 ×Ö½ÚºóÇл» RAMA¡£ÒÔ´ËÑ»·ÀàÍÆ¡£
µ± RAMA ±»Ð´Èë 1024 ×Ö½Úʱ£¬ ¸ø¶ÁʱÐòÌṩһ¸öÆô¶¯ÐźŶÁÈ¡ RAMA µÄÊý¾Ý£¬ ¶ÁÈ¡Íê RAMA µÄ 1024 ×Ö½ÚÊý¾Ýʱ£¬ Çл»¶Á RAMB ÒÔ´ËÀàÍÆ¡£
Õâ¸ö¹¤³ÌµÄ¹¤³Ì½á¹¹ÈçÏÂͼ£º

Ê×ÏÈEF3L40CG332B_DEV¿ª·¢°åÌṩÁË25MhzµÄ¾§ÕñʱÖÓÊäÈëµ½EF3L40CG332BµÄʱÖӹܽš£

ÏëÒªµÃµ½100MhzµÄ¶ÁдËÙÂÊ£¬ÐèÒªÏÈÓÃPLLµÃµ½±¶ÆµÊ±ÖÓ¡£

ÔÚtoolsĿ¼Ïµã»÷IP Generator½øÈëIP coreÒ³Ãæ£¬²¢Ñ¡ÔñPLL£¬ÊäÈëʱÖÓÌîÈë°å×Ó¾§Õñ25Mhz¡£

Êä³öʱÖÓÌîÈëËùÐèÒªµÄ100Mhz£¬²¢´ÓC0Êä³ö¡£

ÉèÖÃÍê³Éºó£¬Éú³ÉµÄmoduleÉùÃ÷ÈçÏ£¨ÍêÕûÄ£¿é¿É²Î¿¼´úÂ룩

ÔÙÉú³ÉramµÄIPÄ£¿é
ÔÚIP coreÖÐÑ¡ÔñRAM


Memory typeÑ¡Ôñ¼òµ¥Ë«¿Úram£¬memory sizeÉèÖÃλ¿í8bitÉî¶È1024
ÉèÖÃÍê³Éºó£¬Éú³ÉµÄmoduleÉùÃ÷ÈçÏ£¨ÍêÕûÄ£¿é¿É²Î¿¼´úÂ룩

È»ºó±àд¶¥²ãÎļþ²¢ÇÒÔÚ¶¥²ãÀý»¯PLLºÍRAMA¡¢RAMB¡£
¶¥²ãÎļþÖÐÖ÷ÒªÊǶÔramµÄÊäÈë¿Ú½øÐÐʱÐò²Ù×÷£¬°üÀ¨ramA¡¢ramBµÄ¶ÁµØÖ·£¬Ð´µØÖ·¡¢Ê¹ÄÜÐźźÍÊäÈëÊä³öÊý¾Ý£¬Ïêϸ´úÂë±Ê¼ÇÖв»ÔÙ׸Êö£¬¿ÉÒÔÖ±½Ó²Î¿¼´úÂë¡£
¿É×ÛºÏÄ£¿é±àдÍê³Éºó£¬±àд·Âտģ¿é²¢Ê¹Ó÷ÂÕæÈí¼þ½øÐзÂÕæ¡£
ÓÉÓÚ±¾´Î¹¤³ÌʹÓõ½Á˰²Â·µÄIP¿â£¬Òò´ËÒ²ÐèÒªÔÚmodelsimÖÐÌí¼ÓÏàÓ¦µÄ°²Â··ÂÕæ¿â£¬Ìí¼Ó·½·¨ÈçÏ£º
Ê×ÏÈÔÚmodelsimµÄ°²×°Ä¿Â¼ÏÂÃæ±à¼modelsimµÄ³õʼ»¯Îļþmodelsim.ini£¬ÓÒ¼üÊôÐԺ󣬽«ËüµÄÖ»¶ÁÊôÐÔÈ¡Ïû£¬È»ºóÓÃÎı¾Îļþ£¨±¾¹¤³ÌʹÓõÄÊÇnotepad++£©±à¼¡£

ÔÚmodelsim.iniµÄ[library]ÁбíÏÂÌí¼Ó°²Â·µÄ·ÂÕæ¿âÎļþĿ¼£¬°²Â·ËùÓеķÂÕæ¿âÎļþ¶¼ÔÚ°²Â·µÄ±àÒëÈí¼þTD°²×°Ä¿Â¼ÏµÄsimÎļþ¼ÐÖУ¬´Ë´¦½«ÆäËùÓеĿâÎļþ¶¼¸´ÖƽøÁËmodelsimµÄÎļþ¼ÐÀÈô²»¸´ÖÆ£¬Ò²¿ÉÖ±½ÓÊäÈ밲·Îļþ¼ÐµÄ·¾¶¡£


±£´æºóÍ˳ö£¬´ò¿ªmodelsim²¢´´½¨¹¤³Ì£¬±àÒëͨ¹ýºó£¬½øÈë·ÂÕæ²½Ö裬ÔÚsimulate״̬À¸ÏÂÑ¡Ôñstart simulate£¬ÈçÏÂͼ£º

Ñ¡Ôñºó½øÈëµ½ÈçÏÂÒ³Ãæ£º

Ñ¡Ôñ·ÂÕæµÄ¶¥²ã²¢ÇҹرÕÓÅ»¯Ñ¡Ïî¡£
ͬһ¸ö´°¿Ú´ò¿ªlibrariesÒ³Ãæ²¢ÔÚsearch librariesÀ¸ÓÒ²àÑ¡Ôñadd£¬ÏÂÀÁбíÑ¡Ôñ¶ÔÓ¦µÄef3µÄ¿âÎļþ¡£

ÉèÖÃÍê³Éºóµã»÷OK½øÈë·ÂÕæ¼´¿É¡£
±¾´ÎʵÑéÖÐÓö¼ûÎÊÌâºÍµ÷ÊÔÈçÏ£º
01

¸Õ¿ªÊ¼pllûÓÐÊä³öÐźţ¬Òò´Ë´ò¿ªÁËpll²é¿´²¨Ðη¢ÏÖpll²¨ÐÎÈçÏ£º

·¢ÏÖÊÇÖÃλÁËresetÐźŵ¼Öµģ¬²é¿´´úÂë·¢ÏÖÈçÏ£º

¸´Î»ÐźÅÖ±½ÓÁ¬½Óµ½ÁËpllµÄÖÃλÐźţ¬ÓÉÓÚ¸´Î»ÐźÅÊÇµÍµçÆ½ÓÐЧ¶øÖÃλÐźÅÊÇ¸ßµçÆ½ÓÐЧ£¬Òò´Ëµ¼ÖÂÁËpllÒ»Ö±´¦ÓÚ¸´Î»µÄÇé¿ö¡£¸ü¸Äºó£¬Ö±½Ó½«pll¸´Î»ÐźÅÖÃ0£¬´úÂëºÍ·ÂÕæ½á¹ûÕý³££¬ÈçÏÂËùʾ£º


02
PLLÎÊÌâ½â¾öºó£¬¹Û²âÊý¾ÝÕûÌå¶ÁдÇé¿ö¡£

³õ²½¹Û²â¿ÉÒÔ·¢ÏÖ£¬rama¶ÁʹÄÜÐźÅֻת±äÁËÒ»´Î£¬¶ørambµÄ¶ÁʹÄÜʼÖÕδÄÜÌø±ä£¬·µ»Ø´úÂë²é¿´·¢ÏÖ£º

Âß¼ÅжÏʱ佫ramaµÄдʹÄÜÐźÅÖÃ1µÄÌõ¼þд³öÀ´¡£
rambµÄдʹÄÜͬÀí£º

Ð޸ĺ󣬴úÂëÈçÏ£º


²¨ÐηÂÕæÈçÏ£º

´Ö¿´»ù±¾·ûºÏrama¡¢ramb½»Ìæ¶ÁдµÄ¹¦ÄÜ£¬¹Û²ârama¡¢rambʱÐò½»ÌæÏ¸½Ú¡£

ÔÚramaºÍrambдʹÄÜÐźÅת»»Ê±£¬·¢ÏÖ¿ÕÁËÒ»ÅÄ£¬Ôٲ鿴´úÂ룬·¢ÏÖrama¡¢rambдʹÄÜÔÚÌõ¼þÅжÏʱ£¬Ê¹ÓõÄÅжÏÂß¼ÊDz»Ò»ÑùµÄ£¬µ¼ÖÂramb_wrenµÄÖÃλ»áÔÚrama_wrenÖÃλºóµÄÏÂÒ»ÅĽøÐС£


Òò´Ë¸ü¸Äramb_wrenµÄÅжÏÌõ¼þ£¬Ê¹Ö®Óërama_wrenµÄÒ»Ñù£¬¶¼ÒÔдµØÖ·ÎªÌõ¼þÅжÏÔÙ·ÂÕæ¡£

¿É¹Û²âµ½£¬Ê±ÐòÕý³£¡£

quick start & GPIO Demo
±¾´ÎdemoʵÏÖ¹¦ÄÜÈçÏ£ºFPGA¿ØÖÆLED D1ÉÁ˸£¬MCU¿ØÖÆLED D2³£ÁÁ¡£
2.1 keil¹¤³Ì»·¾³´´½¨
´´½¨Îļþ¼ÐĿ¼ÈçÏ£º

ͼ1
ÆäÖа弶֧³Ö°üÖ±½ÓÓÉÔ³§Ìṩ¡£
ÏÈ´´½¨keil¹¤³Ì£¬´ò¿ªkeil£¬´´½¨¹¤³Ì£¬±£´æÔÚ¶ÔÓ¦µÄMCU¡úprojectĿ¼Ï¡£

Æ÷¼þÑ¡ÔñARM cortex M3Æ÷¼þ¡£

¹¤³Ì½¨ºÃºó£¬Ìí¼Ó±ØÒªµÄBSP°üÖеÄÎļþÈçÏ£¬´´½¨ºÃºóµÄ¹¤³ÌĿ¼Èç×óÀ¸£º

ÆäÖУ¬startup×éϵÄÎļþ·Ö±ðÀ´×ÔMCU\ELF2_BSP\Device\ELF2\SourceºÍMCU\ELF2_BSP\Device\ELF2\Source\ARMĿ¼Ï£»lib×éµÄÎļþÀ´×ÔMCU\ELF2_BSP\Driver£»log×éÎļþ±£´æÔÚMCU\ELF2_BSP\DebugºÍMCU\ELF2_BSP\Debug\RTTĿ¼Ï¡£
н¨main.cÎļþ²¢±£´æÔÚͼ1ËùʾµÄ×ÜÎļþĿ¼ä¯ÀÀµÄMCU¨¤srcÎļþ¼Ðϲ¢Ìí¼Ómain.cµ½¹¤³Ìmain×éÖС£

ÏÂÃæÉèÖÃһЩ¹¤³ÌµÄ»·¾³£¬´ò¿ªoptions for target¶Ô»°¿ò¡£

Çл»µ½userÀ¸£¬ÉèÖÃÈçϲÎÊý£¬ÕâЩ²ÎÊý»áÓ°ÏìÊä³ökeil¹¤³ÌµÄ*.asm ºÍ*.bin Îļþ£¬À×»ðÊ×Ò³ÐèҪͨ¹ýÌí¼ÓÕâÁ½ÌõÖ¸ÁîµÃµ½binÎļþ²¢×îÖÕÌṩ¸øFPGA¡£

Ìí¼ÓµÄÓï¾ä·Ö±ðÈçÏ£º
fromelf -c -v -a --output=@P.asm Objects\%L
fromelf --bin --output=@P.bin Objects\%L
ÔÙÇл»µ½C/C++À¸£¬ÉèÖÃÍ·Îļþ·¾¶ÈçÏ£º

Ò²¿ÉÒÔÖ±½ÓÌí¼ÓÈçÏÂĿ¼
..\ELF2_BSP;..\ELF2_BSP\CMSIS\Core\Include;..\ELF2_BSP\Debug;..\ELF2_BSP\Debug\RTT;..\ELF2_BSP\Driver;..\ELF2_BSP\Driver\regmap;..\ELF2_BSP\Device\ELF2\Include;..\ELF2_BSP\Device\ELF2\Source\ARM
ÆäÓàÉèÖÃÈçÏÂͼ£º

Ìí¼Ó·ÖÉ¢¼ÓÔØÎļþelf2_example.sct£¨elf2_example.sctÎļþ¾ßÌå´úÂë¿É²Î¿¼¹¤³Ì£©

»·¾³ÉèÖÃÍê±Ïºó¿ÉÒÔ¿ªÊ¼±àд¹¤³Ì´úÂë¡£
2.2 C´úÂë±à¼
ÔÚmainº¯ÊýÖбàд¶ÔGPIOµÄ²Ù×÷¡£

ÏȶÔGPIO³õʼ»¯½á¹¹Ì帳ֵ£¬ÔÙµ÷ÓÃGPIO³õʼ»¯º¯Êý£¬HAL_GPIO_WritePinº¯Êý¶ÔÏàÓ¦µÄGPIO½øÐиߵ͸³Öµ¡£
±¾´ÎʹÓÃC´úÂë¶ÔGPIO1_0µÄ²Ù×÷ÊÇÖõͣ¬GPIO1_0¾ßÌ庬Òå»áÔÚÏÂÒ»½Ú£¨1.3£©½øÐÐ˵Ã÷¡£
2.3 TD¹¤³Ì´´½¨ºÍ´úÂë±à¼
´ò¿ªTD4.6.5»òÆäËû°æ±¾´´½¨ÐµĹ¤³Ì¡£

±£´æÔÚ×ÜĿ¼µÄFPGA¡úprojectĿ¼Ï£¬²¢Ñ¡Ôñ¶ÔÓ¦µÄÆ÷¼þÀàÐÍ¡£

Ìí¼Ó»òÕß±à¼Ô´Îļþ£¬±¾´Î¹¤³ÌÄ£¿éÉùÃ÷ÈçÏ£º

ÆäÖÐhw_ledÊÇÓÉFPGAÂß¼¿ØÖƵÄled£¬sw_ledÊÇÓÉMCU´úÂë¿ØÖÆµÄled£¨¼´1.2ÖеÄgpio1_0£©¡£hw_ledµÄ¿ØÖÆ´úÂëÈçÏ£¬sw_ledµÄ¿ØÖÆ´úÂëÏê¼û1.2£º

È»ºóÀý»¯MCUºÍPLL£¬PLLÀý»¯Ö÷ÒªµÃµ½ÊäÈëµ½MCUµÄϵͳʱÖÓ£¬Àý»¯¹ý³ÌÂÔ£¬ÕâÀïÌùÉÏÔÚ¶¥²ãÖе÷ÓõĽá¹û£º

Êä³öµÄ200MµÄʱÖÓ½Óµ½MCUµÄϵͳʱÖÓ¡£
Àý»¯MCU½çÃæÈçÏ£º

ÈçͼËùʾ£¬MCUÖ§³Ö×î´ó 32 ¸öGPIO£¬ÆäÖеÍ16룬¼´GPIO_L0~GPIO_L15ÊÇÖ±½ÓÁ¬½ÓÖÁpadµÄ£»¶øGPIOH0~GPIOH15ÔòÊÇͨ¹ýFPGAÁ¬½ÓÖÁÍⲿ£¬Òò´Ë£¬µ±Ê¹ÓÃÕâ16¸öGPIOµÄʱºò£¬ÐèÒªÔÚFPGA¹¤³ÌµÄ¹Ü½ÌÔ¼ÊøÎļþÖÐÖ¸¶¨¾ßÌåÁ¬½ÓÖÁÄĸö½Å¡£
ÔÚÀý»¯MCUʱ£¬Ê¹Óõ½Äĸö½Å¾Í¿ÉÒÔ´ò¿ª¶ÔÓ¦µÄ¿ª¹Ø£¬ÀýÈç±¾ÀýÖУ¬´ò¿ªÁËL0¡¢L1ºÍH0£¬PPM_CLK£¬ÆäÖÐPPM_CLKÊÇFPGA Fabric ÊäÈëʱÖÓ£¬Á¬½ÓÖÁFPGAµÄPLLÊä³öclk200£»L0¡¢L1Á¬½ÓÖÁPAD£¬¹Û²ìÔÀíͼ¡£

GPIO0ºÍGPIO1Á¬½ÓµÄÊǵ÷ÊÔ¿Ú£»×îºóH0Á¬½ÓÖÁFPGA ÖÐsw_led²¢Í¨¹ý¹Ü½ÅÔ¼ÊøÁ¬½ÓÖÁLED D2¡£
¹¤³ÌµÄ¹Ü½ÌÔ¼ÊøÎļþÈçÏ£º

²é¿ª·¢°åÔÀíͼ£¬D2Á¬½ÓÖÁFPGAµÄ16½Å£¬ÇÒ´ÓÔÀíͼ¿É¹Û²ì£¬keil¹¤³ÌÖжԸÃGPIOµÄ²Ù×÷ÊÇÖõͣ¬¾ßÌåÏÔʾÊÇD2³£ÁÁ¡£


ÉèÖÃÍê±Ïºó£¬Íê³É½á¹ûÉùÃ÷ÈçÏ£º

²¢ÔÚ¶¥²ãÖе÷Óãº

2.4 ÏÂÔØ
KeilºÍTDµÄ¹¤³Ì¶¼´´½¨±àдÍê³Éºó£¬±àÒ빤³Ì¡£ÆäÖУ¬keilÉú³ÉµÄ¹¤³ÌbinÎļþÐèÒªÓëTD¹ØÁª²¢Í¨¹ýTDÏÂÔØÖÁоƬ»ò¿ª·¢°åÖС£
¹ØÁªµÄ²½ÖèÈçÏ£º
ÔÚHDL2Bit FlowÀ¸ÓÒ¼üÑ¡Ôñproperties¡£

ÔÚgenerate bitstreamµÄµÚÁùÏîinstruct ramÖÐÑ¡Ôñkeil¹¤³ÌÉú³ÉµÄbinÎļþµÄĿ¼£¨´Ëʱkeil¹¤³ÌÒѾ±àÒëͨ¹ý£©£¬²¢±£´æ¡£

±£´æºó£¬Ë«»÷generate bitstream±àÒëTD¹¤³Ì£¬¼ÙÈçÔÚÑ¡Ôñ·¾¶Ç°ÒѾ±àÒë¹ýTD¹¤³ÌÁË£¬ÐèÒªÓÒ¼üÑ¡ÔñrerunÖØÐ±àÒ루עÒ⣺¼ÙÈçÐÞ¸ÄÁËkeilµÄCÎļþ¶øTDµÄHDLÎļþûÓб仯£¬½¨ÒéÒ²rerunºóÔÙ½«ÎļþÏÂÔØÖÁ¿ª·¢°å£©

ÏÂÔØ£º

°å×ÓÏÖÏóÈçͼ£º
D1³ÖÐøÉÁ˸£¬D2³£ÁÁ£º

FPGA´®¿ÚͨÐÅ
±¾Demo°¸Àý»ùÓÚ°²Â·µÄEF2M45LG48_MINI_DEV2¿ª·¢°å£¬Í¨¹ý²âÊÔ°åµÄuart¿ÚºÍPC»úµÄuart¿ÚÁ¬½ÓÀ´ÐγÉÒ»¸ö±Õ»·»ØÂ·£¬¼´PC»ú·¢ËÍÊý¾ÝÖÁFPGA²âÊ԰壬FPGA½ÓÊÕ²¢·µ»ØÏàͬµÄÊý¾Ý¡£ÊµÑé½á¹ûͨ¹ýPC»úµÄ´®¿Úµ÷ÊÔÖúÊÖµ÷ÊԲ鿴¡£
3.1 UARTÐÒé
UART ÊÇÒ»ÖÖͨÓô®ÐÐÊý¾Ý×ÜÏߣ¬ÓÃÓÚÒ첽ͨÐÅ£¬½«Êý¾ÝÔÚ´®ÐÐͨÐźͲ¢ÐÐͨÐżäµÄ´«Êäת»»¡£Í¨Ë׵Ľ²¾ÍÊǰѶà±ÈÌØµÄÊý¾Ýת»¯Îªµ¥±ÈÌØµÄÊý¾Ý£¨tx¶Ë£©£¬»òÕ߰ѵ¥±ÈÌØµÄÊý¾Ýת»¯Îª¶à±ÈÌØµÄÊý¾Ý£¨rx¶Ë£©¡£¹¤×÷ÔÀíÊǽ«Êý¾ÝµÄÿ¸ö bit һλ½ÓһλµØ´«Êä¡£
rx£¬½ÓÊÕ¶Ë£¬Î»¿íΪ 1 ±ÈÌØ£¬ pc »úͨ¹ý´®¿ÚÍù FPGA ·¢ 8 ±ÈÌØÊý¾Ýʱ£¬FPGA ͨ¹ý´®¿ÚÏß rx һλһλµØ½ÓÊÕ£¬´Ó×îµÍλµ½×î¸ßλÒÀ´Î½ÓÊÕ£¬×îºóÔÚ FPGA ÀïÃæÎ»Æ´½Ó³É8 ±ÈÌØÊý¾Ý¡£
tx£¬·¢ËͶˣ¬Î»¿íΪ 1 ±ÈÌØ£¬ FPGA ͨ¹ý´®¿ÚÍù pc »ú·¢ 8 ±ÈÌØÊý¾Ýʱ£¬ FPGA °Ñ 8 ±ÈÌØÊý¾Ýͨ¹ý tx ÏßһλһλµÄ´«¸ø pc »ú£¬´Ó×îµÍλµ½×î¸ßλÒÀ´Î·¢ËÍ£¬×îºóÉÏλ»úͨ¹ý´®¿ÚÖúÊÖ°ÑÕâһλһλµÄÊý¾Ýλƴ½Ó³É 8 ±ÈÌØÊý¾Ý¡£
×¢Òâµã£º
1¡¢´®ÐÐÊý¾ÝµÄ·¢ËͺͽÓÊÕ¶¼ÊÇ´ÓµÍλµ½¸ßλ¡£
2¡¢ÔÚ²»·¢ËÍ»òÕß²»½ÓÊÕÊý¾ÝµÄÇé¿öÏ£¬ rx ºÍ tx ´¦ÓÚ¿ÕÏÐ״̬£¬´Ëʱ rx ºÍ tx Ïß¶¼±£³Ö¡¾¸ßµçƽ¡¿£¬Èç¹ûÓÐÊý¾Ý´«µÝ£¬Ê×ÏÈ»áÓÐÒ»¸öÆðʼλ0£¬È»ºóÊÇ 8 ±ÈÌØµÄÊý¾Ý룬½Ó×ÅÓÐ 1 ±ÈÌØµÄֹͣλ(¸ßµçƽ)£¬Èç¹ûֹͣλÒÔºó²»ÔÙ·¢Êý¾Ý£¬½«½øÈë¿ÕÏÐ״̬£¬·ñÔòÓÖ½«Êý¾ÝÏßÀµÍ(½øÈëÆðʼλ״̬)¡£
3¡¢²¨ÌØÂʼÆË㣺uart´«ÊäÓв»Í¬µÄ²¨ÌØÂÊ£¬Ê¹ÓÃHDLÓïÑÔÃèÊöʱ£¬Í¨³£Ê¹ÓüÆÊýÆ÷À´ÊµÏÖ²»Í¬²¨ÌØÂʵÄÊý¾Ý´«²¥¡£¼ÆÊýÆ÷µÄ¼ÆÊýÖµÓë¾ßÌå²¨ÌØÂÊÓйأ¬ÒÔ³£¼ûµÄ115200ΪÀý£¬¼ÙÉèϵͳʱÖÓÊÇ25Mhz£¬Ôò´«Êä1bitËùÐèÒªµÄʱÖÓÖÜÆÚΪ25 * 1000 *1000 /115200 = 217¸ö£¬Òò´Ë¼ÆÊýÆ÷¼ÆÊýÖµ¼´216£¨´Ó0¿ªÊ¼¼ÆÊý£©¡£
3.2 Ä£¿é×Ü¿ò¼Ü
Ä£¿éµÄ×ÜÌå¿ò¼ÜÈçÏ£º

top²ã³ýÁËʱÖӺ͸´Î»ÐźŵÄÊäÈ룬»¹ÓÐÊäÈëÐźÅrxºÍÊä³öÐźÅtx£¬·Ö±ðÀ´×ÔPC»úºÍÊä³öµ½PC»ú£¬Ðγɱջ·¡£×ÓÄ£¿éÖУ¬RxÐźÅÔÙ×÷Ϊuart_rxÄ£¿éµÄÊäÈ룬¾¹ýuart_rxÄ£¿éµÄ´¦Àí£¬×ª»»³É°Ëλ²¢ÐÐÊý¾Ýo_dataÊä³ö£»¶ÔÓÚuart_txÄ£¿é£¬Ö÷Òª½«ÊäÈëµÄi_data²¢ÐÐÐźÅת»»³É´®ÐÐÊý¾ÝÔÙÊä³öµ½PC»ú¡£
3.3 ´úÂëʵÏÖ
1. Rx¶Ë




2.Tx¶Ë




3.4 ¶¥²ã

3.5 ·ÂÕæ



±¾´Î·ÂÕæÊ¹Óõ½ÁËtaskÓï¾ä£¬taskÓï¾äͨ³£ÔÚµ±·ÂÕæÊ±ÐèÒª¸øÊäÈë±äÁ¿Ìض¨µÄÊäÈëֵʱʹÓã¬ÀýÈç±¾´Î·ÂÕæ¶Ôrx¶Ë½øÐи³Öµ¡£
3.6 ·ÂÕæ½á¹û¼°ÎÊÌâÅŲé
Rx¶Ë£º
ÕûÌ岨ÐÎÈçͼ£º

²é¿´Ï¸½ÚÈçÏ£º

µ±rx=1ʱ£¬Êä³öµÄo_data²¢ÐÐÊý¾ÝÔÚo_flag = 1£¨¼´±íʾ´«Êä½áÊø£©Ê±Ò²Îª1£¬½á¹ûÕý³£¡£
Tx¶Ë£º
ÕûÌ岨ÐÎÈçÏ£º

ÉÏͼºÜÃ÷ÏÔ¿ÉÒÔ¿´³ötx¶Ë´«ÊäÓÐÎÊÌ⣬µ±tx·¢ËÍÆðʼ루¼´ÀµÍ£©ºó£¬Ã»Óн«Êý¾ÝÊä³ö¡£¹Û²âÆäËûÐźŲ¨ÐΣ¬»ù±¾Õý³£¡£¿É¼ûÎÊÌâ´ó¸ÅÂʳöÏÖÔÚtx¸³Öµ²¿·Ö£¬Ò»¿ªÊ¼ÒÔΪÊÇ·¢ËÍÊý¾ÝλµÄÌõ¼þÅжÏÓÐÎÊÌ⣬¼ì²é´úÂ룬Êý¾Ý´«ÊäʱµÄÅжÏÌõ¼þÈçÏ£º

²é¿´²¨Ðη¢ÏÖ¸ÃÌõ¼þ¿ÉÒÔ±»Âú×ã¡£

ºóÀ´²é¿´ÆðʼλµÄ·¢ËÍÌõ¼þʱ·¢ÏÖÁË´íÎó£º

Æðʼλ·¢ËÍÒªÓëtx_enͬ²½¡£¼ÙÉèÌõ¼þʹÓÃtx_enÅжϣ¬Ôò»á±Ètx_enÂýÒ»ÅÄ¡£
ÁíÍ⣬²»ÄÜʹÓÃtx_en == 1'b1×÷Ϊ·¢ËÍÆðʼλµÄÅжÏÌõ¼þ£¬ÒòΪtx_en ÔÚÊý¾Ý·¢ËÍʱһֱΪ1£¬ÕâÑùtx¶Ë»áºãΪ0£¬Ð޸ĺó´úÂëÈçÏ£º

Ôٹ۲첨ÐÎÕý³£¡£


3.7 Éϰå×îÖÕЧ¹û
´úÂëÏÂÔØ½ø¿ª·¢°åºó£¬ÔÚ´®¿Úµ÷ÊÔÖúÊÖÖпÉÒÔÕý³£ÊÕ·¢Êý¾Ý£¬ÈçÏ£º
