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

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

?? txmitt.vhd

?? UART的rs232通信接口VHDL語言
?? VHD
字號:
-- --------------------------------------------------------------------
-- >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-- --------------------------------------------------------------------
-- Copyright (c) 2001 by Lattice Semiconductor Corporation
-- --------------------------------------------------------------------
--
-- Permission:
--
--   Lattice Semiconductor grants permission to use this code for use
--   in synthesis for any Lattice programmable logic product.  Other
--   use of this code, including the selling or duplication of any
--   portion is strictly prohibited.
--
-- Disclaimer:
--
--   This VHDL or Verilog source code is intended as a design reference
--   which illustrates how these types of functions can be implemented.
--   It is the user's responsibility to verify their design for
--   consistency and functionality through the use of formal
--   verification methods.  Lattice Semiconductor provides no warranty
--   regarding the use or functionality of this code.
--
-- --------------------------------------------------------------------
--           
--                     Lattice Semiconductor Corporation
--                     5555 NE Moore Court
--                     Hillsboro, OR 97214
--                     U.S.A
--
--                     TEL: 1-800-Lattice (USA and Canada)
--                          408-826-6000 (other locations)
--
--                     web: http://www.latticesemi.com/
--                     email: techsupport@latticesemi.com
--
-- --------------------------------------------------------------------
--
--  Project:           Universal Asynchronous Receiver Transmitter
--  File:              txmitt.vhd
--  Title:             txmitt
--  Design Library:    IEEE
--  Dependencies:      IEEE.std_logic_1164.all
--                     IEEE.std_logic_unsigned.all
--  Description:       VHDL file for the UART Transmitter Module
--
--    <Global reset and clock>
--      Reset       : Master reset
--      Clk16X      : UART internal clock
--
--    <Register>
--      THR         : Transmitter Holding Register
--
--    <Rising edge of THR write strobe>
--      ThrWRn_re   : one Clk16X width pulse indicating rising edge of ThrWRn_r
--
--    <Transmitter output>
--      SOUT        : Transmitter serial output
--
--    <Transmitter control>
--      Databits    : "00"=5-bit, "01"=6-bit, "10"=7-bit, "11"=8-bit
--      Stopbits    : "00"=1-bit, "01"=1.5-bit(5-bit data),
--                    "10"=2-bit(6,7,8-bit data)
--      ParityEnable: '0'=Parity Bit Enable, '1'=Parity Bit Disable
--      ParityEven  : '0'=Even Parity Selected, '1'=Odd Parity Selected
--      ParityStick : '0'=Stick Parity Disable, '1'=Stick Parity Enable
--      TxBreak     : '0'=Disable BREAK assertion, '1'=Assert BREAK
--
--    <Transmitter status>
--      THRE        : THR is empty
--      TEMT        : Both THR and TSR are empty
--
-- --------------------------------------------------------------------
--
-- Revision History :
-- --------------------------------------------------------------------
--   Ver  :| Author            :| Mod. Date :| Changes Made:
--   V1.1 :| J.H.              :| 06/19/01  :| Support ispMACH 5000VG
--   V1.0 :| D.W. & J.H.       :| 06/01/01  :| First Release
-- --------------------------------------------------------------------

library IEEE;
use IEEE.Std_Logic_1164.all;
use IEEE.Std_Logic_Unsigned.all;

entity Txmitt is
  port (
    -- Global reset and clock
    Reset       : in  std_logic; -- Master reset
    Clk16X      : in  std_logic; -- UART internal clock
    -- Register THR
    THR         : in  std_logic_vector(7 downto 0); -- Transmitter Holding Reg
    -- Rising edge of THR write strobe
    ThrWRn_re   : in  std_logic;   -- pulse indicating rising of ThrWRn_r
    -- Transmitter output
    SOUT        : out std_logic;
    -- Transmitter control
    DataBits    : in  std_logic_vector(1 downto 0);
    StopBits    : in  std_logic_vector(1 downto 0);
    ParityEnable: in  std_logic;
    ParityEven  : in  std_logic;
    ParityStick : in  std_logic;
    TxBreak     : in  std_logic;
    -- Transmitter status
    THRE        : out std_logic;
    TEMT        : out std_logic
  );
end Txmitt;

architecture Txmitt_a of Txmitt is

  signal TxOutput     : std_logic;
  signal TSR          : std_logic_vector(7 downto 0);
  signal TxParity_r   : std_logic;
  signal ThrEmpty     : std_logic;
  signal TsrEmpty     : std_logic;

  signal TxInStartState  : std_logic;
  signal TxInShiftState  : std_logic;
  signal TxInStopState   : std_logic;

  signal TxInStartState1 : std_logic; -- TxInStartState delayed 1 Clk16X clock
  signal TxInShiftState1 : std_logic; -- TxInShiftState delayed 1 Clk16X clock
  signal TxInStopState1  : std_logic; -- TxInStopState delayed 1 Clk16X clock

  -- Transmitter Clock Enable Signals
  signal TxClkEnA     : std_logic;
  signal TxClkEnB     : std_logic;

  signal TxCNT_r  : std_logic_vector(2 downto 0);
  signal Count_vr : std_logic_vector(3 downto 0);

  -- State Machine Definition
  type state_typ is (start, shift, parity, stop_1bit, stop_2bit, stop_halfbit);
  signal Tx_State     : state_typ;

  -- Attributes for ispMACH5000VG to get higher performance
  --   These can be removed when the UART design is targeted to other devices.
  ATTRIBUTE SYN_KEEP : integer;
  ATTRIBUTE SYN_KEEP OF TxOutput, TxCNT_r, TSR, TxParity_r : SIGNAL IS 1;
  ATTRIBUTE SYN_KEEP OF TsrEmpty, ThrEmpty : SIGNAL IS 1;
  ATTRIBUTE OPT : string;
  ATTRIBUTE OPT OF TxOutput, TxCNT_r, TSR, TxParity_r : SIGNAL IS "KEEP";
  ATTRIBUTE OPT OF TsrEmpty, ThrEmpty : SIGNAL IS "KEEP";

begin

--------------------------------------------------------------------------------
-- Transmitter Finite State Machine
--------------------------------------------------------------------------------

  Shift_Data_Proc: process(Reset, CLK16X)
  begin
    if (Reset='1') then
      TxCNT_r <= (others=>'0');
      TSR <= (others=>'0');
      TxOutput <= '1';
      TxParity_r <= '1';
      Tx_State <= start;
    elsif rising_edge(Clk16X) then
      case Tx_State is
        when start =>
          if (ThrEmpty='0') and (TxClkEnA='1') then
            -- Load data from THR to TSR
            TSR <= THR;
            -- TxParity_r initialization:
            --   set it when odd parity is selected(ParityEven='0')
            --   clear it when even parity is selected(ParityEven='1')
            TxParity_r <= not ParityEven;
            TxOutput <= '0'; -- start bit='0'
            TxCNT_r <= (others=>'0');
            Tx_State <= shift;
          else
            TxOutput <= '1';
          end if;
        when shift =>
          if (TxClkEnA='1') then
            -- Shift serial data out
            TSR <= '0' & TSR(7 downto 1);
            TxParity_r <= TxParity_r xor TSR(0);
            TxOutput <= TSR(0); -- output Data bits
            TxCNT_r <= TxCNT_r + 1;
            if ((Databits="00" and TxCNT_r=4) or
                (Databits="01" and TxCNT_r=5) or
                (Databits="10" and TxCNT_r=6) or
                (Databits="11" and TxCNT_r=7)) then
              if (ParityEnable='0') then
                Tx_State <= stop_1bit;
              else
                Tx_State <= parity;
              end if;
            end if;
          end if;
        when parity =>
          if (TxClkEnA='1') then
            -- Output 1 parity bit
            if (ParityStick='0') then
              TxOutput <= TxParity_r; -- output Parity bit
            else
              TxOutput <= not ParityEven; -- forced parity bit
            end if;
            Tx_State <= stop_1bit;
          end if;
        when stop_1bit =>
          if (TxClkEnA='1') then
            -- Output 1 bit of StopBits
            TxOutput <= '1';
            if (StopBits="00") then -- 1 stop bit
              Tx_State <= start;
            elsif (StopBits="01") then -- 1.5 stop bits(for 5-bit data only)
              Tx_State <= stop_halfbit;
            else -- 2 stop bits(for 6,7,8-bit data)
              Tx_State <= stop_2bit;
            end if;
          end if;
        when stop_2bit =>
          if (TxClkEnA='1') then
            -- Output 2nd bit of 2 Stopbits
            TxOutput <= '1';
            Tx_State <= start;
          end if;
        when stop_halfbit =>
          if (TxClkEnB='1') then -- half bit
            TxOutput <= '1';
            Tx_State <= start;
          end if;
        when others =>
          Tx_State <= Start;
      end case;
    end if;
  end process Shift_Data_Proc;

--------------------------------------------------------------------------------
-- Generate TsrEmpty and ThrEmpty signals
--------------------------------------------------------------------------------

  -- TsrEmpty : will be set whenever TSR is empty
  TsrEmpty_Proc: process(Clk16X, Reset)
  begin
    if (Reset='1') then
      TsrEmpty <= '1';
    elsif rising_edge(Clk16X) then
      if (TxInStopState='1') and (TxInStopState1='0') then
        -- Set TsrEmpty flag to '1' when StopBit(s) is transmitted
        TsrEmpty <= '1';
      elsif (TxInShiftState='1') and (TxInShiftState1='0') then
        -- Reset TsrEmpty flag to '0' when data is transferred from THR to TSR
        TsrEmpty <= '0';
      end if;
    end if;
  end process TsrEmpty_Proc;

  -- ThrEmpty : will be set whenever THR is empty
  ThrEmpty_Proc: process(Clk16X, Reset)
  begin
    if (Reset='1') then
      ThrEmpty <= '1';
    elsif rising_edge(Clk16X) then
      if (ThrWRn_re='1') then
        -- Reset ThrEmpty flag to '0' when data is written into THR by CPU
        ThrEmpty <= '0';
      elsif (TxInShiftState='1') and (TxInShiftState1='0') then
        -- Set ThrEmpty flag to '1' when data is transferred from THR to TSR
        -- (this occurs when signal TxInShiftState is changed from '0' to '1')
        ThrEmpty <= '1';
      end if;
    end if;
  end process ThrEmpty_Proc;

--------------------------------------------------------------------------------
-- Delayed signals for edge detections
--------------------------------------------------------------------------------
  Delay_Signals_Proc: process(Clk16X, Reset)
  begin
    if (Reset='1') then
      TxInStartState1 <= '1';
      TxInShiftState1 <= '1';
      TxInStopState1 <= '1';
    elsif rising_edge(Clk16X) then
      -- Signal for rising edge detection of signal TxInStartState
      TxInStartState1 <= TxInStartState;
      -- Signal for rising edge detection of signal TxInShiftState
      TxInShiftState1 <= TxInShiftState;
      -- Signal for rising edge detection of signal TxInStopState
      TxInStopState1 <= TxInStopState;
    end if;
  end process Delay_Signals_Proc;

--------------------------------------------------------------------------------
-- Transmitter FSM state indication signals
--------------------------------------------------------------------------------

  -- TxInShiftState : will be set whenever transmitter is in shift state
  TxInShiftState_Proc: process(Clk16X, Reset)
  begin
    if (Reset='1') then
      TxInShiftState <= '0';
    elsif rising_edge(Clk16X) then
      if (Tx_State=shift) then
        TxInShiftState <= '1';
      else
        TxInShiftState <= '0';
      end if;
    end if;
  end process TxInShiftState_Proc;

  -- TxInStopState : will be set whenever transmitter is in stop_1bit state
  TxInStopState_Proc: process(Clk16X, Reset)
  begin
    if (Reset='1') then
      TxInStopState <= '0';
    elsif rising_edge(Clk16X) then
      if (Tx_State=stop_1bit) then
        TxInStopState <= '1';
      else
        TxInStopState <= '0';
      end if;
    end if;
  end process TxInStopState_Proc;

  -- TxInStartState : will be set whenever transmitter is in start state
  TxInStartState_Proc: process(Clk16X, Reset)
  begin
    if (Reset='1') then
      TxInStartState <= '0';
    elsif rising_edge(Clk16X) then
      if (Tx_State=start) then
        TxInStartState <= '1';
      else
        TxInStartState <= '0';
      end if;
    end if;
  end process TxInStartState_Proc;
  
--------------------------------------------------------------------------------
-- Generate TxClkEnA/TxClkEnB signals
--------------------------------------------------------------------------------

  -- Transmitter operates at 1/16th of the input clock frequency.
  -- TxClkEnA, TxClkEnB are clock enable signals used in transmitter FSM
  TxCLK_Proc: process(Reset, Clk16X)
  begin
    if (Reset='1') then
      Count_vr <= (others => '1');
      TxClkEnA <= '0';
      TxClkEnB <= '0';
    elsif rising_edge(Clk16X) then

      if (Count_vr="0000") then
         TxClkEnA <= '1';
      else
         TxClkEnA <= '0';
      end if;
      
      -- TxClkEnB will be used only for 1.5 stop bit generation
      if (Count_vr="1000") then
         TxClkEnB <= '1';
      else
         TxClkEnB <= '0';
      end if;
      
      if (TxInStartState='1') and (TxInStartState1='0') then
         Count_vr <= "0011";  -- Offset to the 2 cycle's delay
      else
         Count_vr <= Count_vr + 1;
      end if;

    end if;
  end process TxCLK_Proc;

--------------------------------------------------------------------------------
-- Generate THRE/TEMT flags
--------------------------------------------------------------------------------

  -- Transmitter Holding Register Empty Indicator
  THRE <= ThrEmpty;

  -- Transmitter Empty Indicator is set to '1' whenever THR and TSR are
  -- both empty, and reset to '0' when either THR or TSR contain a character
  TEMT <= '1' when (ThrEmpty='1') and (TsrEmpty='1') else '0';

--------------------------------------------------------------------------------
-- Serial Data Output
--------------------------------------------------------------------------------

  -- If Break Control bit is set to 1, the serial output is forced to Zero
  SOUT <= '0' when (TxBreak='1') else TxOutput;

end Txmitt_a;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲禁片免费| 久久久99精品久久| 精品国产成人在线影院 | 成人妖精视频yjsp地址| 91久久精品午夜一区二区| 日韩欧美色电影| 亚洲精品大片www| 成人一区二区三区| 精品欧美一区二区久久| 午夜激情一区二区三区| av色综合久久天堂av综合| 欧美va日韩va| 日韩成人精品视频| 欧美日韩免费高清一区色橹橹| 欧美极品美女视频| 久久精品国产一区二区三| 欧美日韩一区二区三区视频| 国产精品国产成人国产三级| 国产一区二区91| 日韩欧美国产精品一区| 午夜精品成人在线视频| 色婷婷精品大视频在线蜜桃视频 | 欧美老女人第四色| 亚洲欧美欧美一区二区三区| 国产在线一区观看| 日韩视频在线永久播放| 亚洲成a人片在线观看中文| 91蜜桃传媒精品久久久一区二区| 久久久久9999亚洲精品| 蜜臀av性久久久久av蜜臀妖精| 欧美三级欧美一级| 亚洲第一狼人社区| 欧美日韩在线播放三区四区| 亚洲一区精品在线| 91福利精品视频| 亚洲国产va精品久久久不卡综合| 日韩亚洲欧美在线| 青青草国产精品97视觉盛宴| 日韩午夜电影av| 国产专区欧美精品| 久久久久99精品一区| 国产suv精品一区二区6| 国产精品色哟哟| 成人黄色片在线观看| 中文字幕日韩欧美一区二区三区| 91丨porny丨国产| 亚洲综合一区二区三区| 欧美在线高清视频| 美腿丝袜亚洲色图| 欧美r级电影在线观看| 国产精品一级片| 国产精品毛片无遮挡高清| 99久久er热在这里只有精品15 | 91麻豆精品国产91久久久久久 | 91麻豆精品国产91久久久资源速度| 亚洲bt欧美bt精品| 欧美mv日韩mv亚洲| 99久久精品国产麻豆演员表| 亚洲成人资源在线| 欧美sm极限捆绑bd| 色综合久久综合| 日韩精品久久久久久| 久久久综合视频| 色综合久久中文字幕| 五月天一区二区| 欧美激情艳妇裸体舞| 欧美性色欧美a在线播放| 久久精品国产秦先生| 国产精品久久久久影院老司 | 亚洲一区二区视频在线观看| 91精品国产色综合久久不卡蜜臀 | 国产精品日韩精品欧美在线| 色老汉一区二区三区| 日本不卡一区二区三区| 欧美激情在线一区二区三区| 欧美日韩一级片在线观看| 国内成人免费视频| 亚洲午夜久久久久中文字幕久| 欧美电影免费观看高清完整版在线 | 7777精品久久久大香线蕉| 国产精品1区二区.| 91免费视频网| 蜜臀va亚洲va欧美va天堂| 亚洲欧美在线另类| 久久影院午夜论| 欧美另类变人与禽xxxxx| av电影在线观看完整版一区二区| 蜜桃一区二区三区四区| 亚洲婷婷综合色高清在线| 欧美一区二区免费视频| 日本福利一区二区| 国产精品一区二区久久精品爱涩| 日日夜夜精品视频天天综合网| 国产精品免费人成网站| 26uuu国产一区二区三区| 欧美精品一级二级三级| 色哟哟亚洲精品| 播五月开心婷婷综合| 狠狠色丁香婷综合久久| 日韩av成人高清| 婷婷久久综合九色国产成人| 国产精品久久久久毛片软件| 26uuu亚洲综合色欧美 | 亚洲成av人片观看| 亚洲欧美韩国综合色| 国产精品三级久久久久三级| 国产亚洲va综合人人澡精品| 日韩欧美一区二区在线视频| 欧美日韩成人在线| 欧美日本韩国一区二区三区视频| 色综合久久99| 日本韩国欧美在线| 在线看国产日韩| 欧美日韩大陆在线| 欧美一区二区三区免费| 欧美一区二区三区视频在线观看| 欧美伦理视频网站| 欧美日韩精品久久久| 欧美午夜精品一区二区蜜桃| 欧美在线不卡视频| 在线不卡的av| 日韩精品一区二区在线观看| 日韩亚洲欧美在线| 久久精品亚洲国产奇米99| 国产视频在线观看一区二区三区| 久久久不卡网国产精品一区| 中文字幕av一区二区三区| 国产精品情趣视频| 亚洲品质自拍视频| 亚洲国产精品一区二区久久| 性欧美疯狂xxxxbbbb| 美腿丝袜亚洲三区| 国产69精品一区二区亚洲孕妇| 成人免费视频一区二区| 一本大道久久a久久综合| 欧美日韩美少妇| 日韩欧美一二三四区| 久久精品在这里| 国产精品 欧美精品| 福利一区二区在线| 色噜噜久久综合| 日韩一区二区三免费高清| 久久久精品免费观看| 亚洲欧洲另类国产综合| 国产精品久久看| 亚洲成av人影院| 国产乱码精品一区二区三| 99久久久免费精品国产一区二区| 91成人在线免费观看| 日韩欧美精品三级| 中文字幕一区不卡| 日韩高清不卡一区| 不卡在线视频中文字幕| 欧美群妇大交群中文字幕| 久久久久久久综合狠狠综合| 一区二区三区精品| 国产在线日韩欧美| 色欧美日韩亚洲| 26uuu色噜噜精品一区| 亚洲欧美经典视频| 国产精品综合久久| 欧美三级中文字幕| 中文字幕免费不卡在线| 亚洲高清免费视频| 国产.精品.日韩.另类.中文.在线.播放| 一本色道亚洲精品aⅴ| 久久久五月婷婷| 亚洲成人av一区二区| 成年人午夜久久久| 欧美xxxxx牲另类人与| 亚洲视频免费看| 国产成人午夜99999| 91精品国产手机| 亚洲黄色片在线观看| 在线综合视频播放| 亚洲乱码一区二区三区在线观看| 精品一区二区三区日韩| 欧美日韩免费一区二区三区视频| 国产精品免费丝袜| 高清免费成人av| 久久香蕉国产线看观看99| 亚洲成年人网站在线观看| 色偷偷久久人人79超碰人人澡| 国产亚洲va综合人人澡精品| 蜜桃av噜噜一区二区三区小说| 欧美日韩亚洲高清一区二区| 综合色中文字幕| 成人网在线免费视频| 国产亚洲污的网站| 韩国女主播成人在线| 日韩欧美一区二区在线视频| 天堂va蜜桃一区二区三区| 91久久奴性调教| 亚洲精品v日韩精品| 91亚洲国产成人精品一区二区三| 2020国产精品自拍| 精品亚洲porn| 精品国产91洋老外米糕| 日本免费在线视频不卡一不卡二| 欧美男人的天堂一二区|