ʵÑé12TLC549²ÉÑù¿ØÖÆ ÏÂÔØ±¾ÎÄ

ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2025/5/4 2:46:31ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£

ʵÑéÊ®¶þ TLC549(A/D)²ÉÑù¿ØÖÆ

Ò».

1. 2. 3.

ʵÑéÄ¿µÄ

ÕÆÎÕÄ£/Êýת»»Ð¾Æ¬TLC549µÄʹÓ÷½·¨

ÕÆÎÕÀûÓÃÓÐÏÞ״̬»úʵÏÖÒ»°ãʱÐòÂß¼­·ÖÎöµÄ·½·¨ ÕÆÎÕÒ»°ã״̬»úµÄÉè¼ÆÓëÓ¦Óá£

¶þ. ×¼±¸ÖªÊ¶

TLC549·â×°ÈçͼA.1Ëùʾ£¬ÊÇÒ»¸ö8λµÄ´®ÐÐÄ£Êýת»»Æ÷£¬ANALOG_INΪ²âÁ¿Ðźţ»REF+Ϊת»»ËùÐèµÄÕýµçѹ»ù×¼£¨×î´ó²âÁ¿µçѹ£©£»REF-Ϊת»»ËùÐèµÄ¸ºµçѹ»ù×¼£¨×îС²âÁ¿µçѹ£©£»DATA_OUTΪת»»Êý¾ÝÊä³ö£»CSΪƬѡÐźš£

ͼA.1 TLC549·âװʾÒâͼ

A/DµÄת»»Ê±¼ä×î´ó17us£¬I/OʱÖÓÆµÂʿɴï1.1MHzÈçͼA.2ËùʾΪTLC549µÄʱÐò£¬´ÓͼÖпÉÒÔ¿´³öµ±Æ¬Ñ¡ÐźÅCSΪµÍµçƽʱ£¬ADCµÄǰһ´Îת»»Êý¾Ý£¨A£©µÄ×î¸ßλA7Á¢¼´³öÏÖÔÚÊý¾ÝÏßDATA_OUTÉÏ£¬Ö®ºóµÄÊý¾ÝÔÚʱÖÓI/O_CLOCKµÄϽµÑظı䣬¿ÉÔÚI/O_CLOCKÉÏÉýÑØ¶ÁÈ¡Êý¾Ý¡£¶ÁÍê8λÊý¾Ýºó£¬Èç¹ûƬѡÐźÅCSÖÃΪ¸ßµçƽ£¬ADC¿ªÊ¼²ÉÑù¡¢±£³Ö¡¢×ª»»¡¢Ëø´æ×ª»»½á¹û£¬ÒÔ±ãÏÂÒ»´Î¶ÁÈ¡¡£

ͼA.2 TLC549¹¤×÷ʱÐòͼ

ÔÚ½øÐвÉÑù¿ØÖÆÊ±£¬Òª×¢Òâ²Ù×÷ʱÐòÖ®¼äµÄʱ¼ä¼ä¸ôÒª×ã¹»³¤£¬ÒÔʹADCÄÜÍê³ÉÆäÏàÓ¦µÄ¹¤

£³£¸

×÷¡£È磺tSU(CS)ΪCSÀ­µÍµ½µÍµçƽºóI/O_CLOCKµÚÒ»¸öʱÖÓµ½À´Ê±µÄʱ¼ä£¬ÖÁÉÙÒª1.4us£»tCONVΪADCµÄת»»Ê±¼ä£¬ÖÁÉÙ17us£» I/O_CLOCKΪϵͳʱÖÓÐźţ¬²»Äܳ¬¹ý1.1MHz¡£ÆäËû²ÎÊýÇë²ÎÕÕÊý¾ÝÊֲᡣ

ÓÉÓÚADCÊÇ8λµÄ£¬ÇÒÓ²¼þµç·ÉϵÄREF+Ϊ2.5V£¬REF-½ÓGND£¬ËùÒÔ²ÉÑùµÄµçѹֵΪV=D/255*VREF¡£

°üÀ¨É¨ÃèÏÔʾ²¿·Ö£¬×îºóÍê³ÉµÄµç·Èçͼ Ëùʾ¡£ÆäÖÐadc3ΪAD549µÄ²ÉÑùÄ£¿é£¬ÐèҪ˵Ã÷µÄÊÇ£º¿ÉÒÔʹÓÃÆäËüµÄ·½Ê½Íê³É²ÉÑù£¬Ëù¸ø³öµÄ²Î¿¼³ÌÐò²¢²»ÊÇ×îºÃµÄ£¬Ê¹ÓõÄ״̬½Ï¶à£¬µ«ÊÇÔÚ¶Áȡת»»Êý¾ÝµÄÁ÷³ÌÏà¶Ô±È½ÏÇåÎú£»ÏÔʾ½á¹ûΪASCIIÂëÏÔʾ£¬Ã»ÓнøÐÐÊ®½øÖÆ´¦Àí¡£

ÔÚʵ¼ÊÓ¦ÓÃÖУ¬ÓÈÆäÊǵ¥Æ¬»ú¿ØÖÆÖУ¬Ê¹Óô®ÐÐADµÄƵÂʱȽϸߣ¬Ö÷ÒªÊÇÒòΪ´®ÐÐADËùÐèÒªµÄ¹Ü½ÅÏà¶Ô½ÏÉÙ¡£

DIV400HzPIN_28k48mdat_inINPUTVCCINPUTVCCadc3clk48Msdat_inad_clkcs_ndata_out[7..0]instd[7..0]OUTPUTOUTPUTOUTPUTPIN_132ad_clkcsclk48Mclockmodulus 120000q[16..0]inst4up counterq[16..0]PIN_131d[31..8]PIN_134GNDdig[7..0]CNT16q[16]clockinst6up counterSCANLEDDECODE7SEL[2..0]DIN[31..0]DIG[7..0]DSEL[3..0]DIN[3..0]OUTPUTq[2..0]PIN_214PIN_213PIN_216PIN_215PIN_161PIN_162PIN_159PIN_160PIN_164PIN_163PIN_166PIN_165PIN_168PIN_167PIN_170PIN_169reg[7..0]d[31..0]inst5inst3DOUT[7..0]

ͼA.3 TLC549µÄ²ÉÑù¿ØÖƶ¥²ãÔ­Àíͼ

Èý. ʵÑé²½Öè

1¡¢ н¨¹¤³Ì

н¨Îļþ¼Ð£¬ÔÚ¸ÃÎļþ¼ÐÏÂн¨¹¤³Ìtlc549¡£ 2¡¢ ±àдµÍ²ãHDLÎļþ

¸ù¾ÝÔ­ÀíͼA.3µÄÄÚÈÝ£¬±àд¸÷¸ö¹¦ÄÜÄ£¿éµÄHDLÎļþ¡£ 3¡¢±àд¶¥²ãÔ­ÀíͼÎļþ

н¨Ô­ÀíͼÎļþ£¬²¢Ìí¼Ó¸÷¸öÄ£¿é¡£

É趨Ϊ¶¥²ãÎļþ£¬½øÐбàÒ룬ÈçÓдíÎ󣬾ÀÕýÖ±ÖÁ³É¹¦ÎªÖ¹¡£ 3¡¢ Ëø¶¨¹Ü½Å

°´±í Ëø¶¨¹Ü½Å£¬²¢ÖØÐ½øÐбàÒ룬°Ñ¹Ü½ÅÐÅÏ¢±àÒëµ½ÏÂÔØÎļþÖС£ 4¡¢ ÏÂÔØ

ÏÂÔØºó£¬µ÷½ÚµçλÆ÷RW1£¬¹Û²ìÊýÂë¹ÜµÄÊýÖµ±ä»¯ÊÇ·ñÕýÈ·¡£

ËÄ. ʵÑé²Î¿¼³ÌÐò

³ÌÐòÇåµ¥ adc3.VHD

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;

£³£¹

USE IEEE.STD_LOGIC_Arith.ALL; USE IEEE.STD_LOGIC_Unsigned.ALL;

ENTITY adc3 IS PORT( clk48M: IN STD_LOGIC;--ϵͳʱÖÓ

sdat_in: IN STD_LOGIC;--TLC549´®ÐÐÊý¾ÝÊäÈë ad_clk: OUT STD_LOGIC;--TLC549 I/OʱÖÓ cs_n: OUT STD_LOGIC;--TLC549 Ƭѡ¿ØÖÆ

data_out: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--ADת»»Êý¾ÝÊä³ö ); END;

ARCHITECTURE one OF adc3 IS

SIGNAL tsu_number: STD_LOGIC_VECTOR(2 downto 0);--tsuÑÓʱÀÛ¼ÓÆ÷ SIGNAL clk_count: STD_LOGIC_VECTOR(3 downto 0);--24´Î·ÖƵÀÛ¼ÓÆ÷

SIGNAL con_number: STD_LOGIC_VECTOR(5 downto 0);--µÈ´ýת»»ÑÓʱÀÛ¼ÓÆ÷ SIGNAL clk2M,con_ready,read_ready,reset_con,reset_tsu,can_read: STD_LOGIC; SIGNAL data_reg: STD_LOGIC_VECTOR(7 downto 0);--¶ÁÊý½á¹û¼Ä´æÆ÷

TYPE states IS(st0,st1,st2,st3,st4,st5,st6,st7,st8,st9,st10,st11,st12,st13,st14,st15,st16); SIGNAL c_state,n_state:states; BEGIN

PROCESS (clk48M) BEGIN IF RISING_EDGE(clk48M) THEN IF clk_count =\ clk_count<=\ clk2M<=not clk2M;--2MµÄʱÖÓÐźŠELSE clk_count<=clk_count+1; END IF; END IF; END PROCESS;

PROCESS (clk2M) BEGIN IF RISING_EDGE(clk2M) THEN c_state<=n_state; --Ö÷¿ØÊ±Ðò½ø³Ì END IF; END PROCESS;

£´£°