亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mc8051_siu.vhd

?? Standard 8051 IP Core
?? VHD
?? 第 1 頁 / 共 4 頁
字號:
-------------------------------------------------------------------------------
library IEEE; 
use IEEE.std_logic_1164.all; 
use IEEE.std_logic_arith.all; 
  
-----------------------------ENTITY DECLARATION--------------------------------

entity mc8051_siu is

  port (clk     : in std_logic;  		    --< system clock
        reset   : in std_logic;  		    --< system reset
        tf_i    : in std_logic;  		    --< timer1 overflow flag
        trans_i : in std_logic;  		    --< 1 activates transm.
        rxd_i   : in std_logic;  		    --< serial data input
        scon_i  : in std_logic_vector(5 downto 0);  --< from SFR register
  						    --< bits 7 to 3
        sbuf_i  : in std_logic_vector(7 downto 0);  --< data for transm.
        smod_i  : in std_logic;  		    --< low(0)/high baudrate

        sbuf_o  : out std_logic_vector(7 downto 0);  --< received data 
        scon_o  : out std_logic_vector(2 downto 0);  --< to SFR register 
  						     --< bits 0 to 2
        rxdwr_o : out std_logic;  	             --< rxd direction signal
        rxd_o   : out std_logic;  		     --< mode0 data output
        txd_o   : out std_logic);  		     --< serial data output
  
end mc8051_siu;
-------------------------------------------------------------------------------
architecture rtl of mc8051_siu is

  signal s_rxpre_count  : unsigned(5 downto 0);  -- Receive prescaler
  signal s_txpre_count  : unsigned(5 downto 0);  -- Transmit prescaler
  signal s_m0_shift_en  : std_logic;             -- masks out every sixteenth
                                                 -- rising edge of clk
  signal s_m2_rxshift_en  : std_logic;           -- mode 2 shift enable
  signal s_m13_rxshift_en : std_logic;           -- mode 1 and 3 shift enable
  signal s_m2_txshift_en  : std_logic;           -- mode 2 shift enable
  signal s_m13_txshift_en : std_logic;           -- mode 1 and 3 shift enable
  signal s_ff0          : std_logic;             -- flipflop for edge dedection
  signal s_ff1          : std_logic;             -- flipflop for edge dedection
  signal s_tf           : std_logic;             -- synchronised timer flag
  signal s_mode         : unsigned(1 downto 0);  -- mode
  signal s_sm2          : std_logic;             -- multi processor comm. bit
  signal s_detect       : std_logic;             -- indicates start of recept. 
  signal s_ren          : std_logic;             -- receive enable
  signal s_rxd_val      : std_logic;             -- received data bit
  signal s_txdm0        : std_logic;             -- shift clock for m0
  signal s_ri           : std_logic;             -- external receive interrupt 
  signal s_trans        : std_logic;             -- enable transmission 
  signal s_recv_done    : std_logic;             -- receive interrupt
  signal s_tran_done    : std_logic;             -- transmit interrupt
  signal s_rb8          : std_logic;             -- 8th data bit
  signal s_tb8          : std_logic;             -- 8th data bit
  signal s_recv_state   : unsigned(3 downto 0);  -- state reg. of receive unit
  signal s_tran_state   : unsigned(3 downto 0);  -- state reg. of transmit unit
  signal s_rxd_ff0      : std_logic;             -- sample flip-flop
  signal s_rxd_ff1      : std_logic;             -- sample flip-flop
  signal s_rxd_ff2      : std_logic;             -- sample flip-flop
  signal s_det_ff0      : std_logic;             -- rec. detect flip-flop
  signal s_det_ff1      : std_logic;             -- rec. detect flip-flop
  signal s_tran_sh      : unsigned(10 downto 0); -- transmission shift register
  signal s_recv_sh      : unsigned(7 downto 0);  -- reception shift register
  signal s_recv_buf     : unsigned(7 downto 0);  -- reception buffer register
  signal s_rxm13_ff0    : std_logic;             -- generates an enable singal
  signal s_rxm13_ff1    : std_logic;             -- generates an enable singal
  signal s_txm13_ff0    : std_logic;             -- generates an enable singal
  signal s_txm13_ff1    : std_logic;             -- generates an enable singal
  
begin                 -- architecture rtl
    
  s_mode(1) <= scon_i(4);               -- defines the 4 operating modes
  s_mode(0) <= scon_i(3); 
  s_ren  <= scon_i(1);                  -- receive enable
  s_sm2  <= scon_i(2);                  -- 1 time or half time baud rate
  s_tb8  <= scon_i(0);                  -- 9th data bit for transmission
  s_ri   <= scon_i(5);                  -- the receive interrupt bit of the
                                        -- control unit
  sbuf_o <= std_logic_vector(s_recv_buf);  -- the receive buffer output
  scon_o(0) <= s_recv_done;             -- set when reception is completed
  scon_o(1) <= s_tran_done;             -- set when transmission is completed
  scon_o(2) <= s_rb8;                   -- 9th data bit of reception  

-------------------------------------------------------------------------------
  -- The two flip flops are updated every rising clock edge of clk.
  -- If a rising edge
  -- on the port tf_i is dedected the signal s_tf is set to 1 for one period.
  --
  -- The transmission start signal s_trans is generated and held high till
  -- the statemachine has been launched with its first shift.
  --
  -- The shift clock for mode0 is generated. It toggles with the half
  -- s_m0_shift_en rate.
  
  s_tf <= '1' when (s_ff0 = '1' and s_ff1 = '0') else '0';      

  p_sample_tf: process (clk,
                        reset)
      
    begin

      if reset = '1' then
        s_ff0 <= '0';
        s_ff1 <= '0';
        s_trans <= '0';
      else
        if clk'event and clk = '1' then
          s_ff0 <= tf_i;
          s_ff1 <= s_ff0;
          
          if trans_i = '1' then
            s_trans <= '1';
          else
            case s_mode is
              when ("00") =>
                if s_m0_shift_en = '1' then
                  s_trans <= '0';
                end if;
              when ("01") => 
                if s_m13_txshift_en = '1' then
                  s_trans <= '0';
                end if;
              when ("10") => 
                if s_m2_txshift_en = '1' then
                  s_trans <= '0';
                end if;
              when others => 
                if s_m13_txshift_en = '1' then
                  s_trans <= '0';
                end if;
            end case;
          end if;
        end if;    
      end if;    

  end process p_sample_tf;
      

-------------------------------------------------------------------------------
  -- The register s_rxpre_count is driven with the system clock clk. So a
  -- good enable signal (which is stable when clk has its rising edge) can be
  -- derived to mask out every pulse of clk needed.
  -- s_m0_shift_en activates every sixteenth clock cycle
  -- s_m2_shift_en activates baud rates of 1/32 or 1/64 the clock frequenzy
  -- depending on signal smod_i
  -- s_m13_shift_en activates baud rates depending on timer/counter1 flag
      
  s_m0_shift_en <= '1' when s_txpre_count(3 downto 0) = conv_unsigned(15,5)
                   else '0';
      
  s_m2_rxshift_en <= '1' when (s_rxpre_count(4 downto 0) = conv_unsigned(31,5)
                               and smod_i = '1') or
                              (s_rxpre_count = conv_unsigned(63,6)
                               and smod_i = '0')
                   else '0';
  s_m13_rxshift_en <= '1' when s_rxm13_ff0 = '1' and s_rxm13_ff1 = '0'
                      else '0';

  s_m2_txshift_en <= '1' when (s_txpre_count(4 downto 0) = conv_unsigned(31,5)
                               and smod_i = '1') or
                              (s_txpre_count = conv_unsigned(63,6)
                               and smod_i = '0')
                   else '0';
  s_m13_txshift_en <= '1' when s_txm13_ff0 = '1' and s_txm13_ff1 = '0'
                      else '0';
      
  p_divide_clk: process (clk, reset)
    
    begin

      if reset = '1' then
        s_rxpre_count <= conv_unsigned(0,6);
        s_txpre_count <= conv_unsigned(0,6);
        s_rxm13_ff0 <= '0';
        s_rxm13_ff1 <= '0';
        s_txm13_ff0 <= '0';
        s_txm13_ff1 <= '0';
      else
        if clk'event and clk='1' then
            
          s_rxm13_ff1 <= s_rxm13_ff0;
          s_txm13_ff1 <= s_txm13_ff0;
          
          if smod_i = '1' then
            if s_rxpre_count(3 downto 0) = conv_unsigned(15,4) then
              s_rxm13_ff0 <= '1';
            else
              s_rxm13_ff0 <= '0';
            end if;
          else
            if s_rxpre_count(4 downto 0) = conv_unsigned(31,5) then
              s_rxm13_ff0 <= '1';
            else
              s_rxm13_ff0 <= '0';
            end if;              
          end if;
             
          if smod_i = '1' then
            if s_txpre_count(3 downto 0) = conv_unsigned(15,4) then
              s_txm13_ff0 <= '1';
            else
              s_txm13_ff0 <= '0';
            end if;
          else
            if s_txpre_count(4 downto 0) = conv_unsigned(31,5) then
              s_txm13_ff0 <= '1';
            else
              s_txm13_ff0 <= '0';
            end if;              
          end if;
            
          if trans_i = '1' then
            s_txpre_count <= conv_unsigned(0,6);
          else
            if s_mode=conv_unsigned(0,2) or s_mode=conv_unsigned(2,2) then 
              s_txpre_count <= s_txpre_count + conv_unsigned(1,1);
            else
              if s_tf = '1' then
                s_txpre_count <= s_txpre_count + conv_unsigned(1,1);  
              end if;
            end if;              
          end if;

          if s_detect = '1' then
            s_rxpre_count <= conv_unsigned(0,6);
          else
            if s_mode=conv_unsigned(0,2) or s_mode=conv_unsigned(2,2) then 
              s_rxpre_count <= s_rxpre_count + conv_unsigned(1,1);
            else
              if s_tf = '1' then
                s_rxpre_count <= s_rxpre_count + conv_unsigned(1,1);  
              end if;
            end if;              
          end if;
        end if;
      end if;    

  end process p_divide_clk;

-------------------------------------------------------------------------------
  -- This section samples the serial input for data detection, that is a
  -- 1-to-0 transition at rxd in state "0000".
  -- In all other states this unit reads the data bits depending on the baud
  -- rate. In mode0 this section is not active.

  s_detect <= '1' when s_det_ff0 = '0' and s_det_ff1 = '1' else '0'; 
  s_rxd_val <= '1' when (s_rxd_ff0 = '1' and s_rxd_ff1 = '1') or
                        (s_rxd_ff0 = '1' and s_rxd_ff2 = '1') or
                        (s_rxd_ff1 = '1' and s_rxd_ff2 = '1') else '0';
               
  p_sample_rx: process (clk,
                        reset)
    
  begin
    if reset = '1' then
      s_rxd_ff0 <= '0';
      s_rxd_ff1 <= '0';
      s_rxd_ff2 <= '0';
      s_det_ff0 <= '0';
      s_det_ff1 <= '0';
    else
      if clk'event and clk='1' then          
        if s_recv_state = conv_unsigned(0,4) then   -- state "0000" means
          if s_ren = '1' then                       -- to listen for a 1 to 0
            case s_mode is                          -- transition
              when ("01") | ("11") => 
                if smod_i = '1' then
                  if s_tf = '1' then
                    s_det_ff0 <= rxd_i;  
                    s_det_ff1 <= s_det_ff0;
                  end if;
                else
                  if s_rxpre_count(0) = '1' then
                    s_det_ff0 <= rxd_i;  
                    s_det_ff1 <= s_det_ff0;                    
                  end if;
                end if;
              when ("10") =>
                if smod_i = '1' then
                  if s_rxpre_count(0) = '1' then
                    s_det_ff0 <= rxd_i;  
                    s_det_ff1 <= s_det_ff0;
                  end if;
                else
                  if s_rxpre_count(1) = '1' then
                    s_det_ff0 <= rxd_i;  
                    s_det_ff1 <= s_det_ff0;                    
                  end if;
                end if;
              when others =>
                null;
            end case;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜碰碰视频| 国产日韩在线不卡| 欧美猛男超大videosgay| 91蜜桃在线免费视频| 北条麻妃国产九九精品视频| 福利一区福利二区| 国产成人啪午夜精品网站男同| 久久99国产精品久久99| 精品一区二区三区免费观看| 九一久久久久久| 国产麻豆视频一区| 国产成人av自拍| 午夜久久久久久久久久一区二区| 午夜久久久久久久久| 日韩精品视频网站| 国模冰冰炮一区二区| 国产很黄免费观看久久| 高潮精品一区videoshd| 99视频超级精品| 欧美日韩一卡二卡三卡| 欧美一卡2卡三卡4卡5免费| 日韩欧美的一区| 中文字幕乱码久久午夜不卡| 亚洲色图第一区| 婷婷夜色潮精品综合在线| 精品一区二区影视| 大胆欧美人体老妇| 在线看国产日韩| 日韩小视频在线观看专区| 久久久午夜精品| 尤物在线观看一区| 六月丁香婷婷久久| 成人免费看黄yyy456| 色狠狠av一区二区三区| 欧美一区二区视频在线观看 | 色哟哟一区二区| 欧美日韩高清在线| 久久精品在这里| 亚洲欧美日韩电影| 麻豆国产精品一区二区三区| 国产乱码精品一区二区三区五月婷| 成人免费高清在线观看| 欧美三级三级三级| 久久无码av三级| 亚洲综合一区在线| 久久99精品国产.久久久久 | www激情久久| 亚洲日本在线a| 奇米综合一区二区三区精品视频 | 91丨porny丨在线| 日韩一区二区精品| 成人免费小视频| 日本欧美一区二区在线观看| 国产成人av一区二区三区在线观看| 欧洲av在线精品| 国产日韩av一区二区| 亚洲成年人影院| 成人黄色电影在线| 欧美一区二区三区播放老司机| 国产欧美一区二区精品性色超碰 | 日韩国产一二三区| 成人精品一区二区三区中文字幕| 欧美电影在线免费观看| 国产欧美日韩亚州综合 | 成人国产精品免费网站| 欧美肥胖老妇做爰| 亚洲免费大片在线观看| 国产精品自拍毛片| 欧美一级夜夜爽| 亚洲欧美中日韩| 国内精品国产成人国产三级粉色| 91福利国产精品| 国产精品激情偷乱一区二区∴| 美女任你摸久久| 欧美中文字幕一二三区视频| 中文字幕欧美激情| 麻豆成人在线观看| 欧美日韩国产不卡| 一区二区三区产品免费精品久久75| 国产乱码精品一品二品| 欧美猛男超大videosgay| 国产精品视频线看| 国产精品夜夜嗨| 精品剧情在线观看| 午夜欧美大尺度福利影院在线看| 91在线观看视频| 国产精品女同互慰在线看| 久草中文综合在线| 欧美妇女性影城| 亚洲国产精品久久人人爱| av在线不卡网| 国产精品污www在线观看| 蓝色福利精品导航| 日韩西西人体444www| 日韩av高清在线观看| 欧美色综合天天久久综合精品| 成人欧美一区二区三区| 成人av小说网| 中文字幕在线一区免费| 成人一区二区视频| 国产欧美一区二区三区在线看蜜臀 | 国产电影精品久久禁18| 亚洲精品一线二线三线无人区| 人人精品人人爱| 欧美v国产在线一区二区三区| 免费的成人av| 精品久久久久久久久久久院品网| 青青草国产成人99久久| 日韩免费高清电影| 国产在线精品视频| 国产色产综合产在线视频| 国产夫妻精品视频| 国产精品女人毛片| 色8久久人人97超碰香蕉987| 一区二区三区中文在线观看| 91老司机福利 在线| 亚洲最新在线观看| 欧美日韩国产系列| 久久精品国产999大香线蕉| 精品福利视频一区二区三区| 国产一区二区三区精品欧美日韩一区二区三区 | 一区二区在线观看不卡| 色老汉av一区二区三区| 亚洲无线码一区二区三区| 欧美日韩国产经典色站一区二区三区| 日日摸夜夜添夜夜添精品视频| 欧美一区二区三区日韩视频| 国产做a爰片久久毛片| 国产精品久久久久久户外露出| 色婷婷av一区二区| 天堂va蜜桃一区二区三区| 欧美大片在线观看| zzijzzij亚洲日本少妇熟睡| 亚洲激情男女视频| 日韩一级大片在线| 成人激情小说乱人伦| 亚洲一区中文日韩| 精品国产一区二区三区av性色| 成人黄色片在线观看| 亚洲国产精品一区二区www| 精品国产一区二区三区av性色| 成人h版在线观看| 香蕉久久夜色精品国产使用方法 | 国产精品福利电影一区二区三区四区| 欧洲一区二区av| 国产综合久久久久久久久久久久| 中文字幕一区二区三区乱码在线 | 日韩欧美国产精品一区| 成人午夜精品在线| 午夜av一区二区三区| 国产欧美日韩综合精品一区二区| 在线精品国精品国产尤物884a| 久久99精品久久久| 夜夜操天天操亚洲| 精品成人a区在线观看| 色噜噜狠狠色综合中国| 久久99久久精品| 一区二区欧美精品| 久久久一区二区三区| 欧美日韩一区小说| 丁香桃色午夜亚洲一区二区三区| 亚洲午夜在线电影| 国产精品福利一区二区三区| 91精品国产一区二区三区香蕉| 99精品视频一区| 国产一区二区视频在线播放| 亚洲地区一二三色| 成人欧美一区二区三区视频网页| 日韩欧美美女一区二区三区| 色综合激情久久| 成人在线视频一区二区| 天天av天天翘天天综合网| 国产精品国产三级国产普通话99 | 99re在线视频这里只有精品| 免费看日韩a级影片| 夜夜操天天操亚洲| 中文字幕一区二区在线播放| 精品国产一二三| 欧美一区二区三区视频在线观看| 色综合久久综合网97色综合| 五月天丁香久久| 欧美精品第一页| 色天使色偷偷av一区二区| 懂色av一区二区三区蜜臀| 裸体一区二区三区| 五月激情六月综合| 亚洲欧美日韩国产综合在线| 欧美国产一区二区| 精品卡一卡二卡三卡四在线| 91.麻豆视频| 在线观看日产精品| 99久久精品国产毛片| 成人h动漫精品一区二| 一区二区在线电影| 亚洲人成人一区二区在线观看| 国产视频一区二区在线观看| 精品国产一区a| 精品久久久久久综合日本欧美| 91精品国产综合久久香蕉麻豆| 精品视频一区三区九区|