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

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

?? usb_new_rcv_ram_rtl.vhdl

?? 實現USB接口功能的VHDL和verilog完整源代碼
?? VHDL
?? 第 1 頁 / 共 2 頁
字號:
--------------------------------------------------------------------------------
--
--  P H I L I P S  C O M P A N Y  R E S T R I C T E D
--                                         
--  Copyright (c) 1998.                    
--
--  Philips Electronics N.V.
--
--  Philips Semiconductors
--  Interconnectivity and Processor Peripheral group
--  Bangalore,India
--  All rights reserved. Reproduction in whole or in part is prohibited
--  without the written permission of the copyright owner.
--------------------------------------------------------------------------------
--
--  File            : usb_new_rcv_ram_rtl.vhdl 
--
--  Module          : Recieve RAM manager
--
--  Project         : VPB bus interface to USB 1.1 device (USBFS22)
--
--  Author          :              
--
--  Description     : The Architecture of RAM manager module. This module handles 
--                    writing of USB data into the RAM and reading of data from
--                    RAM by processor side.
--                    PROCEDURE for writing the data:
--                    1. Get the buffer number in RAM for an endpoint
--                    2. Get the start address of the buffer
--                    3. Leave one address in the buffer for header
--                    4. Write the data
--                    5. Update the header
--                    PROCEDURE for reading the data:
--                    1. Get the buffer number in RAM for an endpoint
--                    2. Get the start address of the buffer
--                    3. Read the header which holds packet_length and valid bit
--                    4. Read the data
--                    For ISO endpoints, each buffer has a Full flag to indicate if
--                    there was a data in the previous frame, otherwise send an
--                    empty packet to the processor on request
--                    Whenever Rx_Pkt_End comes, reset RxRdAdPointer
--
--  Contact address : sanjeev@blr.sc.philips.com
--
---------------------------------------------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;

library work ;
use work.PCK_GENERAL.all;

library work;
use work.PCK_APB.all; 

architecture RTL of RCV_RAM is
  
  signal  RxDataAccepted_I:     boolean;                      -- Data accepted        
  signal  RxDataCount:          Int_CountDatatype;            -- Counter 
  signal  RAMAddress_Wr:        RxRAMAddr_bits;               -- RAM write address
  signal  RAMAddress_Rd:        RxRAMAddr_bits;               -- RAM write address
  signal  RAMAddress:           RxRAMAddr_bits;               -- RAM address
  signal  RAM_WriteReq:         boolean;                      -- RAM wirite request
  signal  write:                one_bit;                      -- RAM write
  signal  RAMData:              four_bytes;                   -- RAM write data
  signal  RAM_WriteGrant:       boolean;                      -- RAM write grant
  signal  ByteCount:            Int_ThreeBits;                -- Byte counter
  signal  MemBufReg:            T_MipsWord;                   -- Memory buffer register
  signal  RxValidData:          booleans(0 to 1);             -- Valid flags for ISO buffers
  signal  EmptyPacket:          one_bit;                      -- Empty packet transfer
  signal  write_pkt_length_I:   boolean;                      -- Write packet lenght
  begin

    RxDataAccepted    <=  RxDataAccepted_I;
    write_pkt_length  <=  write_pkt_length_I;
    
    process(clk) 
      variable   RxWrBufferNo:           int_RxAddrTableType; -- buffer index in RAM
      variable   RxRdBufferNo:           int_RxAddrTableType; -- buffer index in RAM
      variable   WriteRxHeader:          boolean;             -- write header for a buffer
      variable   RxWrAdPointer:          Int_RxRamType;       -- RAM write address pointer
      variable   RxRdAdPointer:          Int_RxRamType;       -- RAM read address pointer
      variable   BufferFree:             boolean;             -- Buffer is available
      variable   RxError:                boolean;             -- Error in packet
      variable   DataToRam:              four_bytes;          -- Data to RAM
      variable   MemBufRegFull:          boolean;             -- memory buffer register is full
      variable   IsoEndPoint:            boolean;             -- ISO endpoint 
      variable   EmptyBuffer:            boolean;             -- No ISO packet from USB in the last frame
      -------------------------------------------------------------------------
      -- This function returns the index of buffer in RAM (RxWrBufferNo) 
      -- corresponding to a physical endpoint. The following table gives the 
      -- allocation of buffers for different endpoints. Bulk(Logical_EP: 3 OUT) 
      -- and ISO(Logical_EP: 4 OUT) endpoints are provided with double buffers.
      -- 
      -- Buffer_Number     Physical_EP     Logical_EP    Start_Address
      --     0              0                0 OUT           0 
      --     1              2                1 OUT           5 
      --     2              4                2 OUT           7 
      --     3              4                2 OUT           24 
      --     4              6                3 OUT           41 
      --     5              6                3 OUT           58 
      --     6              8                4 OUT           75 
      --     7              8                4 OUT           84 
      --------------------------------------------------------------------------
      procedure get_wr_buffer_index(Physical_EP: Int_EndPointType) is
         variable Logical_EP:  logical_ep_type;
        begin
          Logical_EP := physical_to_logical(Physical_EP);
          BufferFree := true;
          case Logical_EP is
    	when 0 =>  
    	    RxWrBufferNo := 0; 
    	when 1 =>  
    	    RxWrBufferNo := 1; 
    	when 2 =>  
    	if(USBToggleBuffer_Out(Physical_EP) = 0 and not FullBuffer_EP(Physical_EP)(0)) then 	
            RxWrBufferNo := 2; 		
        elsif(USBToggleBuffer_Out(Physical_EP) = 1 and not FullBuffer_EP(Physical_EP)(1)) then 	
            RxWrBufferNo := 3; 		
        else 					
            BufferFree := false; 		
        end if; 				
    	when 3 =>  
    	if(USBToggleBuffer_Out(Physical_EP) = 0 and not FullBuffer_EP(Physical_EP)(0)) then 	
            RxWrBufferNo := 4; 		
        elsif(USBToggleBuffer_Out(Physical_EP) = 1 and not FullBuffer_EP(Physical_EP)(1)) then 	
            RxWrBufferNo := 5; 		
        else 					
            BufferFree := false; 		
        end if; 				
    	when 4 =>  			
         if(PI_IsoToggle_Out = 0) then 		
            RxWrBufferNo := 6; 		
         else 					
            RxWrBufferNo := 7; 	
         end if; 				
      end case; 				
   end get_wr_buffer_index;  			

      -------------------------------------------------------------------------------
      -- This procedure leaves one location at the begining of a buffer in RAM 
      -- for writing header for the packet
      procedure RxleaveHeaderSpace is
        begin
          get_wr_buffer_index(EP_number_out);
          RxWrAdPointer := get_rx_buffer_address(RxWrBufferNo) + 1;
      end RxleaveHeaderSpace;
      -------------------------------------------------------------------------------
      -- This procedure puts data on RAM databus, address on RAM addressbus and makes 
      -- the Write Request signal high.
      -- Also it incriments the address counter.
      procedure RxRamWriteData (variable Data_in : in four_bytes) is
        begin
          RAMAddress_Wr    <= to_unsigned(RxWrAdPointer, RxRAMAddr_Width);
          RAM_WriteReq     <= true; 
          RAMData          <= Data_in;
          if(RxWrAdPointer = RxRamDepth - 1) then 
             RxWrAdPointer := 0;
          else
             RxWrAdPointer := RxWrAdPointer + 1;
          end if;
      end RxRamWriteData;
      ------------------------------------------------------------------------------
      -- This procedure recieves the data bytes from USB and writes into a 4-byte 
      -- wide register(Memory Buffer Register). After each byte is writen into the 
      -- MBR RxDataAccepted is asserted. Also leaves 1-word address space at the 
      -- begining of each RAM buffer
      procedure RxRamManager is
        variable DataToRam   : byte;
        begin
          -- leave one byte for the header in the beginning.
          if(RxDataCount = 0 and not RAM_WriteReq) then
             RxleaveHeaderSpace;
          end if;
          if(not MemBufRegFull) then
             MemBufReg(ByteCount) <= RxCore_Data;
             ByteCount            <= ByteCount + 1;
             RxDataAccepted_I     <= true;
             RxDataCount          <= RxDataCount + 1;
          end if; 
      end RxRamManager;
      -------------------------------------------------------------------------------
      -- This procedure writes header for a buffer in RAM. The header format is as
      -- shown below:
      -- Bit  31:           '1' Valid data '0' Corrupted data
      -- Bits 30 downto 10: Ignore (0's)
      -- Bits  9 downto  0: Packet size in Bytes
      -- For all packets except ISO, the size without any errors equals Rx_N_Data and
      -- with errors it is 0. For ISO, the size with error equals Rx_N_Data - 2 and 
      -- without eror it is equal to Rx_N_Data.

      procedure RxRamWriteHeader is
        begin   
          RxWrAdPointer := get_rx_buffer_address(RxWrBufferNo);
          DataToRam(30 DOWNTO 10) := (others => '0');
          RxDataCount <= 0;
          --IsoEndPoint := dma_endp_iso(EP_number_out);
          if(RxError and IsoEndPoint) then
             DataToRam(9 downto 0) := to_unsigned(Rx_N_Data - 2, 16)(9 downto 0);
          else
             DataToRam(9 downto 0) := to_unsigned(Rx_N_Data,16)(9 downto 0);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产真实乱子伦精品视频| 中文字幕欧美三区| 在线观看三级视频欧美| 成人黄色小视频| 国产大陆精品国产| 成人网在线播放| av电影在线不卡| 欧洲国产伦久久久久久久| 欧美人狂配大交3d怪物一区| 欧美午夜精品久久久久久超碰| 在线中文字幕一区二区| 欧美性xxxxxxxx| 日韩一区二区三区av| 欧美精品一区男女天堂| 国产精品无人区| 怡红院av一区二区三区| 亚洲成av人综合在线观看| 久久99热这里只有精品| 国产成人在线观看免费网站| 成人精品视频网站| 欧美做爰猛烈大尺度电影无法无天| 欧美中文字幕一区二区三区| 3751色影院一区二区三区| 欧美mv和日韩mv的网站| 国产精品视频一二三区| 亚洲午夜av在线| 奇米影视在线99精品| 精品一区二区久久久| 国产一区亚洲一区| 国产成人av电影在线播放| 色94色欧美sute亚洲13| 欧美男人的天堂一二区| 久久精品一区二区三区av| 亚洲最快最全在线视频| 精品一区二区三区免费观看| 91视频观看免费| 91精品国产一区二区人妖| 国产情人综合久久777777| 亚洲国产精品嫩草影院| 福利91精品一区二区三区| 在线观看区一区二| 国产三级精品在线| 日韩精彩视频在线观看| 97久久人人超碰| 久久一二三国产| 亚洲一本大道在线| 菠萝蜜视频在线观看一区| 日韩免费高清av| 亚洲一区二区视频在线| 风流少妇一区二区| 欧美电影免费观看完整版| 一个色综合av| 国产99久久久精品| 欧美成人a视频| 天天影视网天天综合色在线播放| av一区二区三区| 国产亚洲综合在线| 久久成人免费网| 欧美日韩久久一区二区| 一区二区三区日韩欧美| 成年人国产精品| 国产人妖乱国产精品人妖| 国产一区二区三区美女| 日韩视频一区二区三区| 日本欧美肥老太交大片| 欧美日韩成人综合天天影院 | 日韩免费视频一区二区| 尤物视频一区二区| 91亚洲永久精品| ●精品国产综合乱码久久久久 | 成人黄色片在线观看| 久久久影院官网| 狠狠色狠狠色综合系列| 精品国一区二区三区| 琪琪久久久久日韩精品| 91精品一区二区三区在线观看| 亚洲一区在线观看网站| 欧美在线看片a免费观看| 亚洲欧美日韩久久精品| 91九色最新地址| 一区二区三区毛片| 欧美日韩在线播放三区四区| 午夜欧美在线一二页| 日韩亚洲欧美综合| 久久国产精品无码网站| 久久久久99精品一区| 国产精品一级二级三级| 国产精品国产三级国产a| 91视频一区二区三区| 亚洲香肠在线观看| 欧美一区二区三区婷婷月色| 久久99精品国产麻豆婷婷| 国产日韩欧美麻豆| 成人av免费观看| 亚洲欧美偷拍三级| 欧美日韩一区二区三区在线| 久久精品久久久精品美女| 亚洲精品一区二区在线观看| 国产91在线观看丝袜| 一区二区三区精密机械公司| 777色狠狠一区二区三区| 狠狠色2019综合网| 中文字幕制服丝袜成人av| 欧美日韩一区中文字幕| 韩国午夜理伦三级不卡影院| 亚洲视频 欧洲视频| 51精品秘密在线观看| 粉嫩av亚洲一区二区图片| 亚洲精品国产高清久久伦理二区| 欧美一区二区三区影视| 成人精品国产免费网站| 日韩av中文在线观看| 国产精品日韩精品欧美在线| 欧美日韩国产一区| 懂色中文一区二区在线播放| 亚洲gay无套男同| 国产午夜一区二区三区| 欧美日韩国产美女| 成人伦理片在线| 久久精品噜噜噜成人av农村| 悠悠色在线精品| 日本一区二区高清| 制服丝袜中文字幕亚洲| 91麻豆精品视频| 国产一区二区三区精品视频| 亚洲韩国一区二区三区| 日韩一区欧美小说| 久久嫩草精品久久久久| 3d成人动漫网站| 在线免费不卡视频| bt欧美亚洲午夜电影天堂| 国产综合色在线视频区| 五月天丁香久久| 亚洲女人****多毛耸耸8| 欧美国产综合色视频| 久久夜色精品一区| 欧美一级片在线观看| 欧美区视频在线观看| 99久久777色| 成人a级免费电影| 国产精品一区二区在线看| 精品亚洲porn| 韩国中文字幕2020精品| 美腿丝袜亚洲色图| 亚洲.国产.中文慕字在线| 亚洲欧洲中文日韩久久av乱码| 国产精品国产馆在线真实露脸| 久久精品欧美一区二区三区不卡| 日韩欧美色综合| 精品国产乱码久久| 久久青草欧美一区二区三区| 久久久精品2019中文字幕之3| 精品99一区二区| 久久久久久免费| 国产欧美日韩亚州综合| 国产精品麻豆99久久久久久| 国产精品人人做人人爽人人添| 国产精品日日摸夜夜摸av| 综合网在线视频| 夜夜亚洲天天久久| 午夜久久久久久久久久一区二区| 日韩中文字幕麻豆| 蜜臀av性久久久久蜜臀aⅴ| 久久精品国产精品亚洲红杏 | 99久久伊人网影院| 国产成人午夜视频| 成人高清av在线| 91麻豆免费在线观看| 欧美美女网站色| 欧美大黄免费观看| 国产日韩精品一区二区三区在线| 国产精品国产三级国产aⅴ原创| 亚洲美女免费视频| 日韩高清不卡一区| 国产乱对白刺激视频不卡| av一区二区三区| 欧美日韩国产经典色站一区二区三区| 91麻豆精品国产91| 久久久精品天堂| 亚洲精品视频免费观看| 免费成人你懂的| 高清日韩电视剧大全免费| 欧美性高清videossexo| 2020国产精品自拍| 亚洲乱码日产精品bd| 麻豆91免费看| 色综合天天综合在线视频| 日韩写真欧美这视频| 欧美国产日韩a欧美在线观看| 一区二区成人在线| 国产一区二区视频在线播放| 色婷婷综合久久| 26uuu欧美| 亚洲一区二区视频在线| 国产99久久久国产精品免费看 | 国产在线日韩欧美| 色94色欧美sute亚洲线路二| 国产午夜精品福利| 日韩va欧美va亚洲va久久| 99riav久久精品riav|