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

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

?? rxunit.vhd

?? SoC-Wishbone System IP核的VHDL語言源代碼
?? VHD
字號:
--===========================================================================--
--
--  S Y N T H E Z I A B L E    miniUART   C O R E
--
--  www.OpenCores.Org - January 2000
--  This core adheres to the GNU public license  
--
-- Design units   : miniUART core for the System68
--
-- File name      : rxunit.vhd
--
-- Purpose        : Implements an miniUART device for communication purposes 
--                  between the cpu68 cpu and the Host computer through
--                  an RS-232 communication protocol.
--                  
-- Dependencies   : ieee.std_logic_1164.all;
--                  ieee.numeric_std.all;
--
--===========================================================================--
-------------------------------------------------------------------------------
-- Revision list
-- Version   Author                 Date                        Changes
--
-- 0.1      Ovidiu Lupas     15 January 2000                   New model
-- 2.0      Ovidiu Lupas     17 April   2000  samples counter cleared for bit 0
--        olupas@opencores.org
--
-- 3.0      John Kent         5 January 2003  Added 6850 word format control
-- 3.1      John Kent        12 January 2003  Significantly revamped receive code.
--        dilbert57@opencores.org
-- 3.2      Mike Hasenfratz     7 August   2003       Renamed to match Entity
--				mikehsr@opencores.org
--
-------------------------------------------------------------------------------
-- Description    : Implements the receive unit of the miniUART core. Samples
--                  16 times the RxD line and retain the value in the middle of
--                  the time interval. 
library ieee;
   use ieee.std_logic_1164.all;
   use ieee.std_logic_unsigned.all;

-------------------------------------------------------------------------------
-- Receive unit
-------------------------------------------------------------------------------
entity RxUnit is
  port (
     Clk    : in  Std_Logic;  -- system clock signal
     Reset  : in  Std_Logic;  -- Reset input
     Enable : in  Std_Logic;  -- Enable input
     RxD    : in  Std_Logic;  -- RS-232 data input
     ReadD  : in  Std_Logic;  -- Read data signal
	  Format : in  Std_Logic_Vector(2 downto 0) := "000";
     FRErr  : out Std_Logic;  -- Status signal
     ORErr  : out Std_Logic;  -- Status signal
	  PAErr  : out Std_logic;  -- Status Signal
     DARdy  : out Std_Logic;  -- Status signal
     DAOut  : out Std_Logic_Vector(7 downto 0)
	  );
end entity; --================== End of entity ==============================--
-------------------------------------------------------------------------------
-- Architecture for receive Unit
-------------------------------------------------------------------------------
architecture Behaviour of RxUnit is
  -----------------------------------------------------------------------------
  -- Signals
  -----------------------------------------------------------------------------
  signal RxStart    : Std_Logic;             -- Start Receive Request
  signal RxFinish   : Std_Logic;             -- Receive finished
  signal RxValid    : Std_Logic;             -- Receive data valid
  signal RxFalse    : Std_Logic;             -- False start flag
  signal tmpRxD     : Std_Logic;             -- RxD buffer
  signal tmpRxC     : Std_Logic;             -- Rx clock
  signal tmpDRdy    : Std_Logic;             -- Data Ready flag
  signal tmpRxVal   : Std_Logic;             -- Rx Data Valid
  signal tmpRxFin   : Std_Logic;             -- Rx Finish
  signal outErr     : Std_Logic;             -- Over run error bit
  signal frameErr   : Std_Logic;             -- Framing error bit
  signal ParityErr  : Std_Logic;             -- Parity Error Bit
  signal RxParity   : Std_Logic;             -- Calculated RX parity bit
  signal RxState    : Std_Logic_Vector(3 downto 0);  -- receive bit state
  signal SampleCnt  : Std_Logic_Vector(3 downto 0);  -- samples on one bit counter
  signal ShtReg     : Std_Logic_Vector(7 downto 0);  -- Shift Register
  signal DataOut    : Std_Logic_Vector(7 downto 0);  -- Data Output register

  constant CntOne    : Std_Logic_Vector(3 downto 0):= "0001";
  constant CntZero   : Std_Logic_Vector(3 downto 0):= "0000";

begin
  ---------------------------------------------------------------------
  -- Receiver Read process
  ---------------------------------------------------------------------
  RcvRead : process(Clk, Reset, ReadD, Enable, RxValid, tmpRxVal, tmpDRdy )
  begin
    if Clk'event and Clk='1' then
      if Reset = '1' then
        tmpDRdy   <= '0';
		  tmpRxVal  <= '0';
      else
        if ReadD = '1' then
          tmpDRdy  <= '0';              -- Data was read
			 tmpRxVal <= tmpRxVal;
		  else
		    if RxValid = '1' and tmpRxVal = '0' then
			   tmpDRdy  <= '1';            -- Data was received
				tmpRxVal <= '1';
			 else
		      tmpDRdy <= tmpDRdy;
			   if RxValid = '0' and tmpRxVal = '1' then
			     tmpRxVal  <= '0';
			   else
			     tmpRxVal  <= tmpRxVal;
				end if;
			 end if; -- RxValid
        end if; -- ReadD
      end if; -- reset
    end if; -- clk
  end process;

  ---------------------------------------------------------------------
  -- Receiver Synchronisation process
  ---------------------------------------------------------------------
  RcvSync : process(Clk, Reset, Enable, RxStart, RxFinish, RxD, SampleCnt )
		variable CntIni   : Std_Logic_Vector(3 downto 0);
		variable CntAdd   : Std_Logic_Vector(3 downto 0);
  begin
    if Clk'event and Clk='1' then
      if Reset = '1' then
		  RxStart   <= '0';
        SampleCnt <= "0000";
		  CntIni    := SampleCnt;
		  CntAdd    := CntZero;
      else
        if Enable = '1' then
          if RxFinish = '1' and RxStart = '0' then    -- Are we looking for a start bit ?
            if RxD = '0' then                         -- yes, look for Start Edge 
              RxStart   <= '1';                       -- we have a start edge
		        CntIni    := CntZero;
		        CntAdd    := CntZero;
			   else
				  RxStart   <= '0';                       -- no start, spin sample count
		        CntIni    := SampleCnt;
		        CntAdd    := CntOne;
            end if;
          else
			   if RxFinish = '0' and RxStart = '1' then  -- have we received a start bit ?
			     RxStart <= '0';                         -- yes, reset start request
				else
				  if RxFalse = '1' and RxStart = '1' then -- false start ?
				    RxStart <= '0';                       -- yep, reset start request
              else
			       RxStart <= RxStart;
				  end if;
				end if;
		      CntIni    := SampleCnt;
		      CntAdd    := CntOne;
			 end if; -- RxStart
		  else
		    CntIni    := SampleCnt;
		    CntAdd    := CntZero;
          RxStart   <= RxStart;
        end if; -- enable
      end if; -- reset
		SampleCnt <= CntIni + CntAdd;
    end if; -- clk
  end process;


  ---------------------------------------------------------------------
  -- Receiver Clock process
  ---------------------------------------------------------------------
  RcvClock : process(Clk, Reset, Enable, SampleCnt, RxD, tmpRxD )
  begin
    if Clk'event and Clk='1' then
      if Reset = '1' then
		  tmpRxC    <= '0';
		  tmpRxD    <= '1';
      else
		  if SampleCnt = "1000" then
			 tmpRxD <= RxD;
		  else
			 tmpRxD <= tmpRxD;
 		  end if;

		  if SampleCnt = "1111" then
			 tmpRxC <= '1';
		  else
			 tmpRxC <= '0';
 		  end if;
      end if; -- reset
    end if; -- clk
  end process;

  ---------------------------------------------------------------------
  -- Receiver process
  ---------------------------------------------------------------------
  RcvProc : process(Clk, Reset, RxState, tmpRxC, Enable, tmpRxD, RxStart )
  begin
    if Clk'event and Clk='1' then
      if Reset = '1' then
        frameErr  <= '0';
        outErr    <= '0';
		  parityErr <= '0';

        ShtReg    <= "00000000";  -- Shift register
		  RxParity  <= '0';         -- Parity bit
		  RxFinish  <= '1';         -- Data RX finish flag
		  RxValid   <= '0';         -- Data RX data valid flag
		  RxFalse   <= '0';
        RxState   <= "1111";
		  DataOut   <= "00000000";
      else
        if tmpRxC = '1' and Enable = '1' then
          case RxState is
          when "0000" | "0001" | "0010" | "0011" |
					"0100" | "0101" | "0110" => -- data bits 0 to 6
            ShtReg    <= tmpRxD & ShtReg(7 downto 1);
			   RxParity  <= RxParity xor tmpRxD;
				parityErr <= parityErr;
				frameErr  <= frameErr;
				outErr    <= outErr;
				RxValid   <= '0';   
				DataOut   <= DataOut;
		      RxFalse   <= '0';
            RxFinish  <= '0';
				if RxState = "0110" then
 			     if Format(2) = '0' then
                RxState <= "1000";          -- 7 data + parity
			     else
                RxState <= "0111";          -- 8 data bits
				  end if; -- Format(2)
				else
              RxState   <= RxState + CntOne;
				end if; -- RxState
          when "0111" =>                 -- data bit 7
            ShtReg    <= tmpRxD & ShtReg(7 downto 1);
			   RxParity  <= RxParity xor tmpRxD;
				parityErr <= parityErr;
				frameErr  <= frameErr;
				outErr    <= outErr;
				RxValid   <= '0';   
				DataOut   <= DataOut;
		      RxFalse   <= '0';
            RxFinish  <= '0';
			   if Format(1) = '1' then      -- parity bit ?
              RxState <= "1000";         -- yes, go to parity
				else
              RxState <= "1001";         -- no, must be 2 stop bit bits
			   end if;
	       when "1000" =>                 -- parity bit
			   if Format(2) = '0' then
              ShtReg <= tmpRxD & ShtReg(7 downto 1); -- 7 data + parity
				else
				  ShtReg <= ShtReg;          -- 8 data + parity
				end if;
				RxParity <= RxParity;
				if Format(0) = '0' then      -- parity polarity ?
				  if RxParity = tmpRxD then  -- check even parity
					  parityErr <= '1';
				  else
					  parityErr <= '0';
				  end if;
				else
				  if RxParity = tmpRxD then  -- check for odd parity
					  parityErr <= '0';
				  else
					  parityErr <= '1';
				  end if;
				end if;
				frameErr  <= frameErr;
				outErr    <= outErr;
				RxValid   <= '0';   
				DataOut   <= DataOut;
		      RxFalse   <= '0';
            RxFinish  <= '0';
            RxState   <= "1001";
          when "1001" =>                 -- stop bit (Only one required for RX)
			   ShtReg    <= ShtReg;
				RxParity  <= RxParity;
				parityErr <= parityErr;
            if tmpRxD = '1' then         -- stop bit expected
              frameErr <= '0';           -- yes, no framing error
            else
              frameErr <= '1';           -- no, framing error
            end if;
            if tmpDRdy = '1' then        -- Has previous data been read ? 
              outErr <= '1';             -- no, overrun error
            else
              outErr <= '0';             -- yes, no over run error
            end if;
				RxValid   <= '1';   
				DataOut   <= ShtReg;
		      RxFalse   <= '0';
            RxFinish  <= '1';
            RxState   <= "1111";
          when others =>                 -- this is the idle state
            ShtReg    <= ShtReg;
			   RxParity  <= RxParity;
				parityErr <= parityErr;
				frameErr  <= frameErr;
				outErr    <= outErr;
				RxValid   <= '0';   
				DataOut   <= DataOut;
			   if RxStart = '1' and tmpRxD = '0' then  -- look for start request
		        RxFalse   <= '0';
              RxFinish <= '0';
              RxState  <= "0000"; -- yes, read data
			   else
				  if RxStart = '1' and tmpRxD = '1' then -- start request, but no start bit
				  	 RxFalse   <= '1';
              else
				    RxFalse   <= '0';
				  end if;
			     RxFinish  <= '1';
				  RxState <= "1111";    -- otherwise idle
			   end if;
          end case; -- RxState
		  else
            ShtReg    <= ShtReg;
			   RxParity  <= RxParity;
				parityErr <= parityErr;
				frameErr  <= frameErr;
				outErr    <= outErr;
				RxValid   <= RxValid;   
				DataOut   <= DataOut;
		      RxFalse   <= RxFalse;
			   RxFinish  <= RxFinish;
				RxState   <= RxState;
        end if; -- tmpRxC
      end if; -- reset
    end if; -- clk
  end process;

  DARdy <= tmpDRdy;
  DAOut <= DataOut;
  FRErr <= frameErr;
  ORErr <= outErr;
  PAErr <= parityErr;

end Behaviour; --==================== End of architecture ====================--

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久蜜桃精品| 国产自产视频一区二区三区| 99视频一区二区| 亚洲国产精品高清| 91亚洲午夜精品久久久久久| 亚洲色图制服丝袜| 色妞www精品视频| 亚洲精品美国一| 欧美日韩国产高清一区二区 | 亚洲欧洲精品成人久久奇米网| 成人美女在线视频| 亚洲精品久久久蜜桃| 欧美日韩一区二区在线观看| 男人的天堂亚洲一区| 精品三级在线观看| 国产99久久久国产精品免费看| 亚洲三级免费电影| 欧美日本精品一区二区三区| 激情综合网最新| 国产精品久久精品日日| 欧美性三三影院| 久久国产综合精品| 国产精品色一区二区三区| 欧美性受xxxx| 国产综合久久久久久久久久久久| 亚洲国产经典视频| 欧美日本一区二区在线观看| 国内精品国产成人国产三级粉色| 国产精品无遮挡| 欧美日韩精品一区视频| 国产在线一区二区| 亚洲精品乱码久久久久久久久| 久久久不卡网国产精品一区| 91伊人久久大香线蕉| 日韩精品视频网| 中文字幕的久久| 欧美一区二区成人6969| 成人国产精品视频| 日本欧美韩国一区三区| 中文字幕第一页久久| 欧美福利一区二区| 成人黄色在线看| 免费美女久久99| 亚洲欧美日韩中文播放| 精品99999| 欧美精品日韩综合在线| 9人人澡人人爽人人精品| 老司机免费视频一区二区| 亚洲天堂久久久久久久| 欧美一二区视频| 91国偷自产一区二区三区成为亚洲经典 | 日本韩国一区二区| 韩国成人福利片在线播放| 亚洲国产综合91精品麻豆| 国产日产欧美精品一区二区三区| 欧美一区二区三区免费| 在线观看精品一区| 成人一道本在线| 国内精品第一页| 日本中文一区二区三区| 一区二区免费视频| 亚洲欧洲日韩综合一区二区| 国产亚洲欧美激情| 欧美刺激午夜性久久久久久久 | 五月天激情综合网| 亚洲欧美日韩一区二区三区在线观看| 精品国产露脸精彩对白| 91精品国产综合久久久蜜臀粉嫩| 欧美在线一区二区三区| 91免费精品国自产拍在线不卡| 国产一区二区精品久久99| 精品一区二区精品| 久久国产精品露脸对白| 蜜臀av一区二区在线免费观看| 天天综合网 天天综合色| 亚洲一区二区三区四区在线观看 | 夫妻av一区二区| 国产成人啪免费观看软件| 国产一区二区三区日韩| 国产精品一区免费视频| 91久久香蕉国产日韩欧美9色| 国产suv精品一区二区6| 国产一区二区精品久久| 国产精品1区2区| 国产一区二区视频在线播放| 国产福利一区二区三区| 成人永久免费视频| 99精品在线观看视频| 不卡电影一区二区三区| 色伊人久久综合中文字幕| 91麻豆免费观看| 91电影在线观看| 欧美日韩大陆在线| 日韩片之四级片| 久久九九全国免费| 国产欧美一区二区精品仙草咪| 国产精品每日更新| 亚洲欧洲中文日韩久久av乱码| 亚洲综合丝袜美腿| 青草av.久久免费一区| 国产在线视视频有精品| 不卡影院免费观看| 欧美三级中文字幕| 日韩一区二区三免费高清| 日韩一区二区三区四区| 国产亚洲精品福利| 亚洲卡通欧美制服中文| 五月婷婷激情综合| 韩国精品主播一区二区在线观看| 国产福利一区二区三区| 在线免费不卡视频| 日韩视频免费观看高清完整版在线观看| 日韩精品一区二区三区老鸭窝 | 国产精品国产a| 亚洲v中文字幕| 国产美女精品人人做人人爽| 成人18视频日本| 欧美日韩五月天| 国产三级久久久| 一区二区三区四区在线播放| 免播放器亚洲一区| www.欧美亚洲| 日韩精品一区二区三区四区| 中文字幕一区二区三区不卡| 日精品一区二区三区| 国产麻豆成人传媒免费观看| 91亚洲精华国产精华精华液| 日韩欧美一级片| 亚洲激情在线激情| 在线国产电影不卡| 26uuu久久天堂性欧美| 亚洲一区二区三区四区的| 国产主播一区二区三区| 欧美在线色视频| 久久久久久久久岛国免费| 亚洲一二三四在线观看| 国产乱码精品一区二区三区av | 粉嫩一区二区三区在线看| 在线电影一区二区三区| 中文字幕日韩欧美一区二区三区| 极品销魂美女一区二区三区| 欧美视频你懂的| 亚洲精品中文在线观看| 国产成人精品免费一区二区| 日韩欧美一级精品久久| 亚洲高清免费在线| av电影天堂一区二区在线| 久久精品视频在线看| 免费精品视频在线| 欧美丝袜丝交足nylons图片| 亚洲欧洲日韩在线| 成人免费看黄yyy456| 亚洲精品一区二区三区影院| 日韩影院免费视频| 欧美亚洲国产一区二区三区va| 国产精品乱人伦中文| 丰满白嫩尤物一区二区| 国产亚洲欧美激情| 国产精品18久久久久久久网站| 精品久久久久久久久久久久包黑料| 性久久久久久久久久久久| 欧美午夜理伦三级在线观看| 亚洲男人的天堂在线观看| 91亚洲永久精品| 亚洲欧美区自拍先锋| 成人av电影在线| 亚洲人成在线播放网站岛国| 99在线精品免费| 亚洲婷婷在线视频| 91在线国产观看| 亚洲卡通欧美制服中文| 在线一区二区三区| 亚洲h在线观看| 欧美欧美欧美欧美| 日韩国产欧美在线视频| 日韩欧美视频一区| 色欲综合视频天天天| 最近中文字幕一区二区三区| 91亚洲国产成人精品一区二区三| 亚洲丝袜精品丝袜在线| 91激情在线视频| 亚洲成人av在线电影| 欧美一区二区不卡视频| 久久99日本精品| 国产免费观看久久| 91同城在线观看| 亚洲国产精品一区二区www在线| 欧美日韩性生活| 黑人精品欧美一区二区蜜桃| 久久久99精品免费观看不卡| 成人ar影院免费观看视频| 亚洲精品乱码久久久久久黑人 | 精品一区二区三区免费视频| 久久欧美一区二区| 91免费版在线| 日本免费新一区视频| 国产精品视频一区二区三区不卡| 91麻豆福利精品推荐| 免费成人av在线| 综合在线观看色|