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

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

?? uc_interface.vhd

?? SPI.zip
?? VHD
?? 第 1 頁 / 共 2 頁
字號:
-- *****************************************************************************
-- uc_interface.vhd
-- 
-- Created:  9/15/00 ALS
--      This file provides the 8051 external data memory bus interface 
--      for the SPI Master.
--
-- Revised:  12/12/02 JRH
-- *****************************************************************************

library IEEE;
use IEEE.std_logic_1164.all;


entity uC_interface is
    generic (UC_ADDRESS : std_logic_vector(15 downto 8):= "00000000"  );
    port(
            -- 8051  bus interface
            clk         : in  std_logic;
            reset       : in  std_logic;     
        
            addr_data   : inout std_logic_vector (7 downto 0);  -- multiplexed address/data bus
            addr        : in    std_logic_vector (7 downto 0);  -- high byte of address 
            ale_n       : in    std_logic;                      -- address latch enable, active low 
            psen_n      : in    std_logic;                      -- program store enable, active low
        
            -- directional pins
            rd_n        : in    std_logic;  -- active low read strobe 
            wr_n        : in    std_logic;  -- active low write strobe
            int_n       : inout std_logic;  -- active low interrupt request
    
            -- internal spi signals
            -- interface to spi_control_sm
            spien       : inout std_logic;  -- enables the spi interface logic
            start       : inout std_logic;  -- start transfer
            done        : in    std_logic;  -- byte transfer is complete
            rcv_load    : in    std_logic;  -- load control signal to spi receive register
            spissr      : inout std_logic_vector(7 downto 0);   -- uc slave select register
            ss_n        : in    std_logic;  -- internal version of ss_n being output
            ss_in_int   : in    std_logic;  -- internal sampled version of ss_in_n needed by
                                -- uc to generate an interrupt
            xmit_empty  : in    std_logic;  -- flag indicating that spitr is empty
            xmit_empty_reset: inout std_logic;  -- xmit empty flag reset when spitr is written
            rcv_full    : in    std_logic;  -- flag indicating that spirr has new data
            rcv_full_reset  : inout std_logic;  -- rcv full flag reset when spirr is read

            -- interface to sck_logic;
            clkdiv      : inout std_logic_vector(1 downto 0);   -- sets the clock divisor for sck clock
            cpha        : inout std_logic;  -- sets clock phase for output sck clock
            cpol        : inout std_logic;  -- sets clock polarity for output sck clock
         
            -- interface to receive and transmit shift registers 
            spitr       : inout std_logic_vector (7 downto 0);  -- data to transmit on spi bus
            rcv_cpol    : inout std_logic;          -- clock polarity for incoming data 
            receive_data: in    std_logic_vector (7 downto 0)   -- data received from SPI bus
        
        );
        

end uC_interface;




architecture BEHAVIOUR of uC_interface is

--**************************** Constants ***************************************
constant RESET_ACTIVE : STD_LOGIC := '0';

-- Base Address for SPI Module (addr_bus[15:8])
constant BASE_ADDR  : STD_LOGIC_VECTOR(15 downto 8) := UC_ADDRESS;

-- Register Addresses (5 Total):
-- Status Register (BASE + 80h)
constant SPISR_ADDR     : STD_LOGIC_VECTOR(7 downto 0) := "10000000";

-- Control Register (BASE + 84h)
constant SPICR_ADDR     : STD_LOGIC_VECTOR(7 downto 0) := "10000100";

-- Slave Select Register (BASE + 88h)
constant SPISSR_ADDR    : STD_LOGIC_VECTOR(7 downto 0) := "10001000";

-- Transmit Data Register (BASE + 8Ah)
constant SPITR_ADDR     : STD_LOGIC_VECTOR(7 downto 0) := "10001010";

-- Receive Data Register (BASE + 8Eh)
constant SPIRR_ADDR : STD_LOGIC_VECTOR(7 downto 0) := "10001110";


--**************************** Signal Definitions ***************************************

-- Internal handshaking lines for microprocessor
signal data_out : STD_LOGIC_VECTOR(7 downto 0); -- holds the data to be output on the data bus
signal data_in  : STD_LOGIC_VECTOR(7 downto 0); -- holds the data to be input to the chip
signal data_oe  : STD_LOGIC;                    -- allows data to be output on the data bus

-- State signals for target state machine
type STATE_TYPE is (IDLE, ADDR_DECODE, DATA_TRS, END_CYCLE);
signal prs_state, next_state : STATE_TYPE;                  

-- Address match
signal address_match    : std_logic;

-- Register Enable Lines
signal cntrl_en     : std_logic;    -- control register is addressed
signal stat_en      : std_logic;    -- status register is addressed
signal xmit_en      : std_logic;    -- transmit data register is addressed  
signal rcv_en       : std_logic;    -- receive data register is addressed
signal ssel_en      : std_logic;    -- slave select register is addressed

-- Register reset lines
signal spierr_reset : STD_LOGIC;    -- writing 0 this bit in the status register 
                                    -- generates a reset to the bit
signal int_reset    : STD_LOGIC;    -- writing 0 this bit in the status register 
                                    -- generates a reset to the bit

-- low byte address lines
signal address_low  : STD_LOGIC_VECTOR(7 downto 0);

-- receive data register
signal spirr        : STD_LOGIC_VECTOR(7 downto 0); -- data received from SPI bus

-- control register signals
signal inten        : STD_LOGIC;    -- interrupt enable

-- status register signals
signal dt       : STD_LOGIC;    -- data transferring bit
signal spierr       : STD_LOGIC;    -- spi error bit
signal bb       : STD_LOGIC;    -- bus busy bit



begin

--************************** Bi-directional Data Bus **********************************

-- Bi-directional Data bus
addr_data <= data_out when (data_oe = '1') else (others => 'Z');
data_in <= addr_data when wr_n = '0' else (others => '0');


--************************** uC Interface State Machine *******************************
-- Register process registers next state signals
-- Return to IDLE state whenever RESET is asserted  

UC_SM_REGS: process (clk, reset)
begin
        if reset = RESET_ACTIVE then
            prs_state <= IDLE;
            
        elsif clk'event and clk = '1' then
            prs_state <= next_state;
            
        end if;
    
end process;

-- Combinatorial process determines next state logic
COMBINATIONAL: process (prs_state, ale_n, rd_n, wr_n, address_match, psen_n)
    
begin
    
next_state <= prs_state;
data_oe <= '0';
    
    
    case prs_state is
    
        --****************** IDLE State  *********************
        when IDLE =>

                -- Wait for falling edge of ALE_N with PSEN_N negated
            if ale_n = '0' and psen_n = '1' then
                -- falling edge of ALE_N
                next_state <= ADDR_DECODE;
            end if;

        
        --****************** ADDR_DECODE State  *****************
        when ADDR_DECODE =>
            
            -- Check that this module is being address
            if address_match = '1' then
                    -- Wait for rd_n or wr_n to be asserted
                    if rd_n = '0' or wr_n = '0' then
                        next_state <= DATA_TRS;
                end if;
            else
                -- this module is not being addressed
                  next_state <= IDLE;
            end if;
    
            
        --****************** DATA_TRS State  *********************
        when DATA_TRS =>

                -- Read or write from enabled register (see uC_regs process)
                -- if read cycle, assert the data output enable
                if rd_n = '0' then
                    data_oe <= '1';
                end if;
                
                -- wait until rd_n and wr_n negates before ending cycle
                if rd_n = '1' and wr_n = '1' then
                    next_state <= END_CYCLE;
                end if;

                        
        --****************** END_CYCLE State ********************
        when END_CYCLE =>
                
            
            -- Wait for negation of ale_n
            if (ale_n = '1') then
              next_state <= IDLE;
            end if;
        
             end case;
        
end process;

--************************** Address Registers **********************************
-- This process registers the low byte of address from the multiplexed address/data bus
-- on the falling edge of ale

address_regs: process(reset, ale_n)
begin
        if reset = RESET_ACTIVE then
        
            address_low <= (others => '0');
            
        elsif ale_n'event and ale_n = '0' then
            
            address_low <= addr_data;
        
        end if;
    
end process;

--************************** Address Decode **********************************
-- This process decodes the address and sets enables for the registers
address_decode: process (reset, clk)
begin
    if reset = RESET_ACTIVE then
        
        address_match   <= '0'; -- signal indicating that base address matches
        
        xmit_en     <= '0'; -- xmit data register enable
        rcv_en      <= '0'; -- receive data register enable
        cntrl_en    <= '0'; -- control register enable
        stat_en     <= '0'; -- status register enable
        ssel_en     <= '0'; -- slave select register enable
          
          
        -- Synchronize with rising edge of clock
        elsif clk'event and (clk = '1') then
        
          if ale_n = '0' and addr = BASE_ADDR and psen_n = '1' then
            -- base address matches and address is stable   
            address_match <= '1';
            
                -- Check appropriate register address
                case address_low(7 downto 0) is
              
                    when SPISR_ADDR =>  -- status register has been addressed

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久噜噜亚洲综合| 国产一区二区伦理| 亚洲乱码国产乱码精品精小说| 日韩欧美的一区| 日韩午夜在线观看| 日韩一级高清毛片| 日韩精品自拍偷拍| www国产精品av| www欧美成人18+| 久久精品视频免费| 国产精品日韩精品欧美在线| 欧美国产日本视频| 国产精品久久久久久久久动漫 | 亚洲国产一区二区视频| 日韩伦理av电影| 亚洲免费视频成人| 亚洲国产日日夜夜| 奇米影视一区二区三区小说| 免费视频一区二区| 国产一区二区视频在线播放| 国产精品资源站在线| 国产91在线|亚洲| 97精品电影院| 欧美精品一二三区| 日韩国产欧美三级| 久久超碰97人人做人人爱| 国产在线乱码一区二区三区| 国产成人精品免费| 91亚洲资源网| 在线不卡免费欧美| 久久综合久久综合久久| 国产精品理伦片| 亚洲成人动漫在线免费观看| 青草av.久久免费一区| 国产一区三区三区| 91蜜桃免费观看视频| 欧美日韩午夜在线| 久久久久国产成人精品亚洲午夜| 国产精品国产三级国产| 亚洲一区二区三区不卡国产欧美 | 色哟哟亚洲精品| 69精品人人人人| 国产日韩欧美麻豆| 亚洲国产aⅴ成人精品无吗| 美女看a上一区| 成人av网站大全| 欧美精品欧美精品系列| 国产亚洲成年网址在线观看| 亚洲欧美偷拍卡通变态| 免费在线观看精品| 91在线高清观看| 日韩亚洲欧美成人一区| 国产精品国产自产拍高清av| 天堂资源在线中文精品| 国产成人av影院| 欧美日韩久久久| 国产精品久久精品日日| 免费一区二区视频| 色乱码一区二区三区88| 日韩精品影音先锋| 一区二区在线电影| 国产精品 日产精品 欧美精品| 欧美亚洲综合网| 中文字幕的久久| 久久精品国产在热久久| 色偷偷88欧美精品久久久| 2020日本不卡一区二区视频| 一区二区三区四区不卡视频| 久久99精品国产.久久久久| 色综合久久六月婷婷中文字幕| 26uuu欧美日本| 天堂va蜜桃一区二区三区| 成人国产免费视频| 欧美电影免费观看高清完整版在线观看 | 日韩精品一区二区三区蜜臀| 中文字幕在线视频一区| 激情综合色丁香一区二区| 欧美亚日韩国产aⅴ精品中极品| 久久久噜噜噜久久中文字幕色伊伊| 亚洲电影视频在线| 一本色道久久综合狠狠躁的推荐| 精品国产精品一区二区夜夜嗨| 亚洲国产精品久久久久婷婷884 | 欧美影院一区二区三区| 国产日韩欧美一区二区三区乱码 | 91麻豆精品91久久久久同性| 亚洲狼人国产精品| 成人黄色在线网站| 久久婷婷国产综合国色天香| 日韩制服丝袜先锋影音| 欧美亚洲精品一区| 亚洲美女淫视频| 91一区二区在线观看| 国产精品传媒入口麻豆| 国产99久久久精品| 久久精品一区二区| 国产成人一区二区精品非洲| 欧美成人欧美edvon| 日韩av在线播放中文字幕| 欧美日韩精品电影| 亚洲高清在线精品| 欧美私人免费视频| 亚洲综合视频在线| 欧美日韩视频在线一区二区| 一区二区高清免费观看影视大全| 色综合久久综合| 综合久久综合久久| 色综合久久中文综合久久97| 亚洲色图在线播放| 91久久香蕉国产日韩欧美9色| 亚洲人成伊人成综合网小说| 色综合天天综合网国产成人综合天| 国产精品国产三级国产aⅴ原创| 成人手机电影网| 1000部国产精品成人观看| 97久久超碰国产精品电影| 亚洲日本在线视频观看| 色吊一区二区三区| 亚洲成av人片| 欧美一级二级三级蜜桃| 国内精品伊人久久久久av影院| 久久一区二区三区四区| 国产亚洲一区二区三区在线观看| 国产传媒一区在线| 亚洲欧洲成人自拍| 欧美午夜一区二区三区| 奇米色777欧美一区二区| 欧美成人a∨高清免费观看| 国产乱码精品一区二区三区av | 成人开心网精品视频| 自拍偷拍欧美精品| 欧美色网一区二区| 免费观看在线色综合| 国产午夜一区二区三区| 97精品国产露脸对白| 偷拍亚洲欧洲综合| 精品美女一区二区| 99久久精品免费观看| 亚洲va天堂va国产va久| 精品国产一区二区精华| 成人精品国产一区二区4080| 亚洲综合一区二区三区| 日韩久久免费av| 国产精品污污网站在线观看| 91美女在线观看| 日本午夜一区二区| 国产精品麻豆久久久| 欧美日韩一级大片网址| 精品一区二区三区免费播放| 国产精品二三区| 在线综合+亚洲+欧美中文字幕| 国产精品一二三区| 亚洲一区二区三区四区在线观看| 欧美电视剧免费全集观看 | 久久久午夜电影| 色av成人天堂桃色av| 老司机午夜精品99久久| 国产精品成人一区二区艾草| 欧美一区二区在线视频| 成人性生交大片免费看视频在线| 亚洲二区在线观看| 亚洲国产精品成人综合色在线婷婷| 欧美性大战久久久久久久蜜臀| 国产综合久久久久久久久久久久 | 国产激情精品久久久第一区二区| 一区二区三区中文字幕| 久久久久国产成人精品亚洲午夜| 欧美性猛交xxxx黑人交| 国产成人av自拍| 麻豆免费精品视频| 亚洲精品国产第一综合99久久 | 日韩精品一区二区在线| 色噜噜狠狠成人网p站| 国产精品正在播放| 日本成人超碰在线观看| 一区二区三区中文在线| 中文子幕无线码一区tr| 日韩欧美电影一二三| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产成人综合精品三级| 日产精品久久久久久久性色| 伊人婷婷欧美激情| 国产精品你懂的在线| 欧美精品一区二区三区四区 | 欧美日韩在线不卡| 99久久精品免费看国产免费软件| 精品亚洲免费视频| 日韩电影在线观看网站| 亚洲一区二区三区在线播放| 国产性天天综合网| 久久综合999| 九九视频精品免费| 青青草成人在线观看| 午夜精品久久久久久久蜜桃app| 亚洲丝袜自拍清纯另类| 国产精品嫩草影院av蜜臀| 久久亚洲欧美国产精品乐播| 日韩欧美专区在线| 欧美一级高清片在线观看| 欧美久久一区二区|