²é¿´: 1804  |  »Ø¸´: 2
¡¾ÐüÉͽð±Ò¡¿»Ø´ð±¾ÌûÎÊÌ⣬×÷Õßfxx5013572½«ÔùËÍÄú 5 ¸ö½ð±Ò

fxx5013572

гæ (³õÈëÎÄ̳)

[ÇóÖú] VHDL״̬»úA/D²ÉÑù¿ØÖƵç·ʵÏÖ

(ÀÏʦ˵³ÌÐòÓÐ´í  Çë¸ßÊÖÖ¸µã!лл! Çë°ïæ¸ø¸öÕýÈ·µÄ³ÌÐò!         Äļ¸¸öÊäÈëÐèÒª×Ô¼ºÉèÖõÄ???)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ADCINT IS
    PORT(D  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);  --À´×Ô0809ת»»ºÃµÄ8λÊý¾Ý
CLK  : IN STD_LOGIC;                          --״̬»ú¹¤×÷ʱÖÓ
EOC  : IN STD_LOGIC;                  --ת»»×´Ì¬Ö¸Ê¾£¬µÍµçƽ±íʾÕýÔÚת»»
ALE  : OUT STD_LOGIC;                 --8¸öÄ£ÄâÐźÅͨµÀµØÖ·Ëø´æÐźÅ
START  : OUT STD_LOGIC;                 --ת»»¿ªÊ¼ÐźÅ
OE  : OUT STD_LOGIC;                 --Êý¾ÝÊä³ö3̬¿ØÖÆÐźÅ
ADDA  : OUT STD_LOGIC;                --ÐźÅͨµÀ×îµÍλ¿ØÖÆÐźÅ
LOCK0  : OUT STD_LOGIC;               --¹Û²ìÊý¾ÝËø´æʱÖÓ
Q  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --8λÊý¾ÝÊä³ö
END ADCINT;
ARCHITECTURE behav OF ADCINT IS
TYPE states IS (st0, st1, st2, st3,st4) ; --¶¨Òå¸÷״̬×ÓÀàÐÍ
  SIGNAL current_state, next_state: states :=st0 ;
  SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0);
  SIGNAL LOCK : STD_LOGIC; -- ת»»ºóÊý¾ÝÊä³öËø´æʱÖÓÐźÅ
BEGIN
ADDA <= '1';--µ±ADDA<='0'£¬Ä£ÄâÐźŽøÈëͨµÀIN0£»µ±ADDA<='1'£¬Ôò½øÈëͨµÀIN1
Q <= REGL; LOCK0 <= LOCK ;
  COM: PROCESS(current_state,EOC)  BEGIN  --¹æ¶¨¸÷״̬ת»»·½Ê½
   CASE current_state IS           
   WHEN st0=>ALE<='0';START<='0';LOCK<='0';OE<='0';  next_state <= st1; --0809³õʼ»¯
   WHEN st1=>ALE<='1';START<='1';LOCK<='0';OE<='0';  next_state <= st2; --Æô¶¯²ÉÑù
   WHEN st2=> ALE<='0';START<='0';LOCK<='0';OE<='0';   
     IF (EOC='1') THEN next_state <= st3; --EOC=1±íÃ÷ת»»½áÊø
         ELSE next_state <= st2;  END IF ;    --ת»»Î´½áÊø£¬¼ÌÐøµÈ´ý
   WHEN st3=> ALE<='0';START<='0';LOCK<='0';OE<='1'; next_state <= st4;--¿ªÆôOE,Êä³öת»»ºÃµÄÊý¾Ý
   WHEN st4=> ALE<='0';START<='0';LOCK<='1';OE<='1'; next_state <= st0;
   WHEN OTHERS => next_state <= st0;  
   END CASE ;
END PROCESS COM ;
  REG: PROCESS (CLK)  
    BEGIN
     IF (CLK'EVENT AND CLK='1') THEN current_state<=next_state; END IF;
   END PROCESS REG ;      -- ÓÉÐźÅcurrent_state½«µ±Ç°×´Ì¬Öµ´ø³ö´Ë½ø³Ì:REG
  LATCH1: PROCESS (LOCK) -- ´Ë½ø³ÌÖУ¬ÔÚLOCKµÄÉÏÉýÑØ£¬½«×ª»»ºÃµÄÊý¾ÝËøÈë
         BEGIN
        IF LOCK='1' AND LOCK'EVENT THEN   REGL <= D ; END IF;
       END PROCESS LATCH1 ;
  END behav;[ Last edited by fxx5013572 on 2011-8-31 at 10:02 ]
»Ø¸´´ËÂ¥
Ï£Íû¶àѧµ½µã¶«Î÷...
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

zyj8119

ľ³æ (ÖøÃûдÊÖ)

ÒýÓûØÌû:
1Â¥: Originally posted by fxx5013572 at 2011-08-30 10:39:17:
(ÀÏʦ˵³ÌÐòÓÐ´í  Çë¸ßÊÖÖ¸µã!лл! Çë°ïæ¸ø¸öÕýÈ·µÄ³ÌÐò!         Äļ¸¸öÊäÈëÐèÒª×Ô¼ºÉèÖõÄ???)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ADCINT IS
    PORT(D  : IN STD_LOGIC_VECTOR( ...

altera quartusÏÂÃæµÄ£¿»¹ÊÇcadenceÏÂÃæµÄ£¿
ºÃºÃѧϰ£¬ÌìÌìÏòÉÏ¡£
2Â¥2011-11-23 16:29:48
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

ºÚÉ«·çÐÅ×Ó

ÈÙÓþ°æÖ÷ (ÎÄ̳¾«Ó¢)

»Ê¼ÒÉñýˆ½ÌKOKO»òKOKOÖí

¡¾´ð°¸¡¿Ó¦Öú»ØÌû

¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
ÎÒ¸øÄã¸ö¿ÉÓõÄADC0804Ö±Á÷²ÉÑùºÍÏÔʾµÄ³ÌÐò°É
--ADC0804Ö±Á÷²ÉÑùºÍÏÔʾ
--ÊäÈëµçѹ·¶Î§0-5V£¬ÏÔʾ0-255Êýλ
--**************¿â¶¨Òå¡¢ °ü¶¨Òå********************
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
--******************ʵÌ嶨Òå***********************
entity adc0804_new is
port(
  reset          : in         std_logic;--¸´Î»ÊäÈë
  clk                  : in         std_logic;--Ö÷ʱÖÓÊäÈë
  intr          : in         std_logic;--ADת»»½áÊøÊäÈë
  data_i         : in         std_logic_vector(7 downto 0);--Êý¾ÝÊäÈë
  data_o         : out         std_logic_vector(7 downto 0);--ÊýÂë¹ÜÊý¾ÝÊä³ö
  l                        : out         STD_LOGIC_VECTOR(5 downto 0);--Êä³öÊýÂë¹Üλѡ
  bell                : out        std_logic;--·äÃùÆ÷
  cs                  : out std_logic;--ʹÄÜ
  wr                  : out std_logic;--д¿ØÖÆ
  rd                  : out std_logic--¶Á¿ØÖÆ
  );
end adc0804_new;
--******************½á¹¹Ìå***********************
architecture Behavioral of adc0804_new is

type state is (start, convert, read1, read2);--״̬»ú¶¨Òå
signal current_state, next_state : state;--״̬¶¨Òå
signal read_data : std_logic;--¶ÁÊý¾Ý¼Ä´æÆ÷
signal clock : std_logic;--ɨÃèʱÖÓ
signal p : integer range 0 to 255;--Êý¾Ý¼Ä´æÆ÷
signal b0,b1,b2 : integer range 0 to 9;--3λÊýÂë¹ÜÏÔʾÊý¾Ý¼Ä´æÆ÷
signal cnt : integer range 0 to 3:=0;--ɨÃè¼Ä´æÆ÷
begin
bell<='1';
--********************ÏÔʾ½ø³Ì**********************************
process(p,clk)
        begin
                case p is
                        when 0|10|20|30|40|50|60|70|80|90|100|110|120|130|140|150|160|170|180|190|200|210|220|230|240|250=>b0<=0;
                        when 1|11|21|31|41|51|61|71|81|91|101|111|121|131|141|151|161|171|181|191|201|211|221|231|241|251=>b0<=1;
                        when 2|12|22|32|42|52|62|72|82|92|102|112|122|132|142|152|162|172|182|192|202|212|222|232|242|252=>b0<=2;
                        when 3|13|23|33|43|53|63|73|83|93|103|113|123|133|143|153|163|173|183|193|203|213|223|233|243|253=>b0<=3;
                        when 4|14|24|34|44|54|64|74|84|94|104|114|124|134|144|154|164|174|184|194|204|214|224|234|244|254=>b0<=4;
                        when 5|15|25|35|45|55|65|75|85|95|105|115|125|135|145|155|165|175|185|195|205|215|225|235|245|255=>b0<=5;
                        when 6|16|26|36|46|56|66|76|86|96|106|116|126|136|146|156|166|176|186|196|206|216|226|236|246=>b0<=6;
                        when 7|17|27|37|47|57|67|77|87|97|107|117|127|137|147|157|167|177|187|197|207|217|227|237|247=>b0<=7;
                        when 8|18|28|38|48|58|68|78|88|98|108|118|128|138|148|158|168|178|188|198|208|218|228|238|248=>b0<=8;
                        when 9|19|29|39|49|59|69|79|89|99|109|119|129|139|149|159|169|179|189|199|209|219|229|239|249=>b0<=9;
                        when others=>--b0<=10;
                end case;
               
                                case p is
                        when 0|1|2|3|4|5|6|7|8|9|100|101|102|103|104|105|106|107|108|109|200|201|202|203|204|205|206|207|208|209=>b1<=0;
                        when 10|11|12|13|14|15|16|17|18|19|110|111|112|113|114|115|116|117|118|119|210|211|212|213|214|215|216|217|218|219=>b1<=1;
                        when 20|21|22|23|24|25|26|27|28|29|120|121|122|123|124|125|126|127|128|129|220|221|222|223|224|225|226|227|228|229=>b1<=2;
                        when 30|31|32|33|34|35|36|37|38|39|130|131|132|133|134|135|136|137|138|139|230|231|232|233|234|235|236|237|238|239=>b1<=3;
                        when 40|41|42|43|44|45|46|47|48|49|140|141|142|143|144|145|146|147|148|149|240|241|242|243|244|245|246|247|248|249=>b1<=4;                       
                        when 50|51|52|53|54|55|56|57|58|59|150|151|152|153|154|155|156|157|158|159|250|251|252|253|254|255=>b1<=5;
                        when 60|61|62|63|64|65|66|67|68|69|160|161|162|163|164|165|166|167|168|169=>b1<=6;
                        when 70|71|72|73|74|75|76|77|78|79|170|171|172|173|174|175|176|177|178|179=>b1<=7;
                        when 80|81|82|83|84|85|86|87|88|89|180|181|182|183|184|185|186|187|188|189=>b1<=8;
                        when 90|91|92|93|94|95|96|97|98|99|190|191|192|193|194|195|196|197|198|199=>b1<=9;
                        when others=>--b0<=10;
                end case;
                if p<100 then
                        b2<=0;
                elsif p>=100 and p<200 then
                        b2<=1;
                elsif p>=200 then
                        b2<=2;
                end if;
end process;
--**********************·ÖƵ½ø³Ì*************************
process(clk)
        variable cnt1 : integer range 0 to 100;
        variable cnt2 : integer range 0 to 20;
        begin
                if clk'event and clk='1' then
                if cnt1=100 then
                        cnt1:=0;
                        if cnt2=20 then
                                cnt2:=0;
                                clock<=not clock;
                                if(cnt=3)then
                                        cnt<=0;
                                else
                                        cnt<=cnt+1;
                                end if;
                        else
                                cnt2:=cnt2+1;
                        end if;
                else
                        cnt1:=cnt1+1;
                end if;
        end if;
end process;
--**************״̬Çý¶¯½ø³Ì**********************
sync :process(clock,reset)
begin
  if(reset = '0') then
   current_state <= start;
  elsif(clock'event and clock='1') then
   current_state <= next_state;
  end if;
end process sync;
--***************adc0804Çý¶¯½ø³Ì*******************
comb :process(current_state, intr)
begin
  case current_state is
   when start =>                                 --Æô¶¯×´Ì¬
    next_state <= convert;
    cs <= '0';
    wr <= '0';
    rd <= '1';
    read_data <= '0';
   when convert =>--³õʼ»¯
    if(intr = '0') then
     next_state <= read1;
    else
     next_state <= convert;
    end if;
    cs <= '1';
    wr <= '1';
    rd <= '1';
    read_data <= '0';
   when read1 =>--¶Á״̬1
    next_state <= read2;
    cs <= '0';
    wr <= '1';
    rd <= '0';
    read_data <= '1';
   when read2 =>--¶Á״̬2
    next_state <= start;
    cs <= '1';
    wr <= '1';
    rd <= '1';
    read_data <= '0';
   when others =>--ÆäËû״̬
    next_state <= start;
  end case;
end process comb;
--****************¶ÁÈ¡ADÊý¾Ý********************
get_data: process(clock,reset)
begin
  if(reset = '0') then
   p<=0;
  elsif(clock'event and clock='1') then
   if(read_data = '1') then
    p<=conv_integer(data_i);
   end if;
  end if;
end process;
--********************ÏÔʾ½ø³Ì***************************************
process(cnt)
          FUNCTION b_to_s7(bcd8421:INTEGER RANGE 0 TO 9) RETURN STD_LOGIC_VECTOR IS
       VARIABLE smg7: STD_LOGIC_VECTOR(7 DOWNTO 0);
       BEGIN
        CASE bcd8421 IS                                                                        --¼ÆËãÊä³öÖµ
              WHEN 0 => smg7:="11111100";                                        --abcdefgh
              WHEN 1 => smg7:="01100000";
              WHEN 2 => smg7:="11011010";
              WHEN 3 => smg7:="11110010";
              WHEN 4 => smg7:="01100110";
              WHEN 5 => smg7:="10110110";
          WHEN 6 => smg7:="10111110";
              WHEN 7 => smg7:="11100000";
              WHEN 8 => smg7:="11111110";
              WHEN 9 => smg7:="11110110";
                  WHEN OTHERS=>smg7:="10001110";
       END CASE;
       RETURN smg7;
      END b_to_s7;
   begin
                        case cnt is
                                 when 0 => l<="111110";data_o<=b_to_s7(b0);
                                 when 1 => l<="111101";data_o<=b_to_s7(b1);
                                when 2 => l<="111011";data_o<=b_to_s7(b2);
                                when others=>l<="111111";--data_o<=b_to_s7(8);
                        end case;
end process;
end Behavioral;
ÒÔºó¶à½»Á÷Ŷ£¬Èç¹ûÓÐʶù£¬¿ÉÕ¾ÄÚÁªÏµÎÒ
Èç¹ûÄã¿Þ£¬ÄãµÄ¶ÔÊ־ͻáЦ¡£Èç¹ûÄãЦ£¬ÄãµÄ¶ÔÊ־ͻá¿Þ¡£ÈËÉú¾ÍÏñ·ßÅ­µÄСÄñ£¬Ã¿´ÎÄãʧ°ÜµÄʱºò£¬×ÜÓм¸Ö»ÖíÔÚЦ¡£ÄãÒª×öµÄ¾ÍÊÇÎÞÊÓ³°Ð¦µÄÉùÒô£¬¸ø×Ô¼º´òÆø¡£×Ô.
3Â¥2012-02-10 15:50:25
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌøת ÎÒÒª¶©ÔÄÂ¥Ö÷ fxx5013572 µÄÖ÷Ìâ¸üÐÂ
²»Ó¦Öú È·¶¨»ØÌûÓ¦Öú (×¢Ò⣺ӦÖú²Å¿ÉÄܱ»½±Àø£¬µ«²»ÔÊÐí¹àË®£¬±ØÐëÌîд15¸ö×Ö·ûÒÔÉÏ)
×î¾ßÈËÆøÈÈÌûÍƼö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[˶²©¼ÒÔ°] ¹ØÓÚ˶²©Á¬¶ÁµÄһЩÒÉÎÊ£¿ +6 Lwenter 2024-06-14 7/350 2024-06-18 16:54 by cuiting
[»ù½ðÉêÇë] F¿Ú401ÐèҪɶÎÄÕÂˮƽ +3 lhjr123 2024-06-16 7/350 2024-06-18 16:05 by hon920603
[Óлú½»Á÷] ÅÜ°åÄÜÅÜ¿ª£¬¹ýÖù¹ý²»´¿Ôõô°ì +4 СºúÔÚŬÁ¦ 2024-06-18 6/300 2024-06-18 15:20 by long8811
[ÂÛÎÄͶ¸å] ACS NanoͶ¸åºó·ÖÅäµ½¸±±à¼­ÊÖÀï12ÌìÁË£¬ÄÜÈ·¶¨ËÍÉóÁËÂ𣿠+7 äìÈ÷âùϧ 2024-06-12 12/600 2024-06-18 14:03 by nanoÇóÇóÁË
[ÕÒ¹¤×÷] ҩѧ˶ʿÕÒ²»µ½¹¤×÷£¬´òËãÈ¥×ö¿ÆÑÐÖúÀíÁË +6 pom´÷Ä«¾µ 2024-06-14 19/950 2024-06-18 13:06 by lialee22
[ÂÛÎÄͶ¸å] Éó¸åÈ˺¬ºý¾Ü¸å£¬»¹ÐèÒª»Ø¸´Âð£¿ÈçºÎ»Ø¸´£¿ 20+4 BruceChum 2024-06-15 21/1050 2024-06-18 13:03 by ±ùÀ¶Ò¹ÓÎÉñ
[ÂÛÎÄͶ¸å] ×î½üдÁËһƪ¿ØÖÆÓÅ»¯ÁìÓòµÄÎÄÕ£¬¿ÉÒÔͶÄÄÀï°¡£¿ÓÐûÓÐˮһЩµÄÆÚ¿¯ÍƼö +8 Ïã¹ÏľÏã 2024-06-12 14/700 2024-06-18 11:16 by ÏþÄ¿³ç
[¸ß·Ö×Ó] ÉÕÆ¿ÄںϳɾÛõ¥ +3 ´óµÛ¹úÀÖ 2024-06-17 7/350 2024-06-18 11:10 by ´óµÛ¹úÀÖ
[˶²©¼ÒÔ°] ²©Ê¿±ÏÒµ¸ßУºÍ¾ÍÒµµÄÏà¹ØÎÊÌâ +7 SCITOPPP 2024-06-14 11/550 2024-06-18 07:51 by yinxing1995
[ÂÛÎÄͶ¸å] Éó¸åÎÊÌ⣺Ϊʲôӫ¹â¼¤·¢²¨³¤ºÍ×ÏÍâÎüÊÕ²¨³¤²îµÄ´ó£¿ 10+5 sdawege 2024-06-14 10/500 2024-06-17 18:54 by HH-̽Õë
[Óлú½»Á÷] ³µ¼äÉú²ú£¬Õæ¿Õ¶ÈºÜ¸ß£¬Î¶Ⱥܸߣ¬µ«¼õѹÕôÁóËٶȺÜÂý¡£ 10+12 ÕÙ»½¹íÆülL 2024-06-13 38/1900 2024-06-17 16:46 by ¿ÆÑгæ×ÓСÖúÊÖ
[´ß»¯] Äø¸ºÔØÑõ»¯ÂÁµÄ±£´æÎÊÌâ 8+3 lwn0130 2024-06-15 4/200 2024-06-17 10:48 by adaihao
[ÕÒ¹¤×÷] ½­Î÷Ë«·ÇÒ»±¾ºÍËÄ´¨Ë«Ò»Á÷¸ßУÈçºÎÑ¡Ôñ£¿ 5+8 º®É½ÇÃÖÓ 2024-06-12 25/1250 2024-06-16 22:05 by zhaojiang427
[»ù½ðÉêÇë] Nature 11ÈÕ·¢ÎÄ£¬ÖйúÖøÃûѧÕßÃdzÆÔì¼ÙÆȲ»µÃÒÑ +6 babu2015 2024-06-14 6/300 2024-06-16 18:37 by ϲ»¶ºÍÒ»Ñõ»¯¶þÌ
[»ù½ðÉêÇë] Ï£Íû½ñÄê×Ô¼º¹ú×ÔÈ»ÃæÉÏÏîÄ¿ºÍÀÏÆÅÇàÄêÏîÄ¿ÄÜÖУ¡ +7 ¿ÖÁú°Ö°Ö 2024-06-14 7/350 2024-06-16 14:48 by redfish105
[»ù½ðÉêÇë] ²©Ê¿ºó´´ÐÂÈ˲ÅÖ§³Ö¼Æ»®¹«Ê¾ +9 aishida144 2024-06-14 15/750 2024-06-16 09:52 by msjy
[Óлú½»Á÷] ¦Ð¦Ð¶Ñ»ý»á·¢ÉúÔÚÓлúÈܼÁÖÐÂð 5+3 zibuyu0420 2024-06-13 4/200 2024-06-14 14:17 by СÈâ¸É
[»ù½ðÉêÇë] ²©Ê¿ºóÃæÉÏÏîĿ״̬»¹ÊÇר¼ÒÆÀÉóÂð 10+9 Thatcheremu 2024-06-13 55/2750 2024-06-13 21:23 by ÎÚºÏ÷è÷ë
[˶²©¼ÒÔ°] »úеÑо¿ÉúÈçºÎÄõ½Äêн40+w +13 °¢°Í°¢°ÍŶŶ 2024-06-11 15/750 2024-06-13 15:40 by 113745685
[¿¼²©] ²©µ¼Ñ¡Ôñ +3 bing85977 2024-06-12 3/150 2024-06-13 15:34 by ÎÒÊÇÇñÒ¢
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û