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

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

?? a.vhd

?? ASIC Design using VHDL by Shyam Mani
?? VHD
?? 第 1 頁 / 共 3 頁
字號:


LIBRARY ieee;
USE ieee.STD_LOGIC_1164.ALL;
USE ieee.numeric_std.ALL;

--TOP ENTITY NAME : dramcntrl
--ARCHITECTURE NAME : rtl

ENTITY dramcntrl IS
    GENERIC (
            del : integer := 15; -- will be used to scale the 100 us counter
            len_auto_ref : integer := 10; -- will be used to count no of 
                                          -- pending auto refs which are needed
            len_small : integer := 8; -- will be used to count times for trc,
                                       --tRFC t..etc..etc after INIT has been
                                       --done
            addr_bits_to_dram : integer := 13;
            addr_bits_from_up : integer := 24;
            ba_bits : integer := 2 
            );

    PORT (
        --dram pins Starts

        addr  : OUT    STD_LOGIC_VECTOR (addr_bits_to_dram - 1 DOWNTO 0) ;
        ba    : OUT    STD_LOGIC_VECTOR (ba_bits - 1 DOWNTO 0);
        clk   : OUT    STD_LOGIC ;
        cke   : OUT    STD_LOGIC ;
        cs_n  : OUT    STD_LOGIC ;
        ras_n : OUT    STD_LOGIC ;
        cas_n : OUT    STD_LOGIC ;
        we_n  : OUT    STD_LOGIC ;
        dqm   : OUT    STD_LOGIC_VECTOR (1 DOWNTO 0) ;
        --dram pins Ends
        

        --clk and reset signals Starts
        clk_in : IN STD_LOGIC;
        reset  : IN STD_LOGIC;
        --clk and reset signals Ends
	
	--dram_control_pins at up IF Starts
        addr_from_up : IN STD_LOGIC_VECTOR (addr_bits_from_up -1 DOWNTO 0) ;
        rd_n_from_up : IN STD_LOGIC ;
        wr_n_from_up : IN STD_LOGIC ;
        bus_term_from_up : IN STD_LOGIC ;
        dram_init_done  : OUT STD_LOGIC ;
        rd_dat_from_dram_ready : OUT STD_LOGIC ; -- needs more consideration
        dram_busy : OUT STD_LOGIC 
	--dram_control_pins at up IF Ends
	
      
        );

END dramcntrl;

--##############################################################################
--Architecture starts here
--##############################################################################

ARCHITECTURE rtl OF dramcntrl IS


--##############################################################################
--The following function increments an std_logic_vector type by '1'
--typical usage next_count <= incr_vec(next_count);
--when count reaches the highest value(all ones), the next count is zero.
--##############################################################################

--Function Declaration Section 
FUNCTION incr_vec(s1:STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR is 
                  --this function increments a STD_LOGIC_VECTOR type by '1' 
        VARIABLE V : STD_LOGIC_VECTOR(s1'high DOWNTO s1'low) ; 
        VARIABLE tb : STD_LOGIC_VECTOR(s1'high DOWNTO s1'low); 
        BEGIN 
        tb(s1'low) := '1'; 
        V := s1; 
        for i in (V'low + 1) to V'high loop 
            tb(i) := V(i - 1) and tb(i -1); 
        end loop; 
        for i in V'low to V'high loop 
            if(tb(i) = '1') then 
                V(i) := not(V(i)); 
            end if; 
        end loop; 
        return V; 
        end incr_vec; -- end function 

--##############################################################################
--The following function decrements an std_logic_vector type by '1'
--typical usage next_count <= incr_vec(next_count);
--when count reaches the lowest value(all zeros), the next count is all ones.
--##############################################################################

        FUNCTION  dcr_vec(s1:std_logic_vector) return std_logic_vector is
                  --this function decrements a std_logic_vector type by '1'
        VARIABLE V : std_logic_vector(s1'high downto s1'low) ;
        VARIABLE tb : std_logic_vector(s1'high downto s1'low);
        BEGIN
        tb(s1'low) := '0';
        V := s1;
        for i in (V'low + 1) to V'high loop
            tb(i) := V(i - 1) or tb(i -1);
        end loop;
        for i in V'low to V'high loop
            if(tb(i) = '0') then
                V(i) := not(V(i));
            end if;
        end loop;
        return V;
        end dcr_vec; -- end function


--Function Declaration Section Ends


--Signal Declaration Section

  --SIGNAL delay_reg_int : integer range 0 to 2**14 -1 ;
  SIGNAL delay_reg : STD_LOGIC_VECTOR( del - 1 downto 0) ;
  SIGNAL addr_sig  : STD_LOGIC_VECTOR (addr_bits_to_dram - 1 DOWNTO 0) ;
  SIGNAL ba_sig    : STD_LOGIC_VECTOR(ba_bits - 1 DOWNTO 0) ;

  SIGNAL dram_init_done_s   : STD_LOGIC ;
  SIGNAL dram_init_done_s_del   : STD_LOGIC ;
  SIGNAL reset_del_count   : STD_LOGIC ; --it will reset the delay counter
  --when the dram is ready so that the delay counter now becomes the counter
  --which will count for auto refereshes i.e 7.81 us

  SIGNAL command_bus   : STD_LOGIC_VECTOR (5 DOWNTO 0) ;
  --bit 5 = cs
  --bit 4 = ras
  --bit 3 = cas
  --bit 2 = we
  --bit 1 = dqm(1)
  --bit 0 = dqm(0)

  SIGNAL no_of_refs_needed   : STD_LOGIC_VECTOR(len_auto_ref - 1 downto 0) ;
  SIGNAL one_auto_ref_time_done   : STD_LOGIC ;
  SIGNAL one_auto_ref_complete: STD_LOGIC ;

  SIGNAL auto_ref_pending : STD_LOGIC ;
  SIGNAL write_req_pending: STD_LOGIC ;

  SIGNAL small_count: STD_LOGIC_VECTOR(len_small - 1 downto 0) ;
  SIGNAL small_all_zeros: STD_LOGIC;

  SIGNAL wr_n_from_up_del_1: STD_LOGIC;--to produce a pulse on wr_n_form_up
  SIGNAL wr_n_from_up_del_2: STD_LOGIC;--to produce a pulse on wr_n_form_up
  SIGNAL wr_n_from_up_pulse: STD_LOGIC;--to pulsed wr_n_form_up

  --SIGNAL wr_active_done: STD_LOGIC;--to know if active command has been issued
                                   --following a write sequence
  SIGNAL en_path_up_to_dram: STD_LOGIC;--en direction of data flwo up->dram
  SIGNAL en_path_dram_to_up: STD_LOGIC;--en direction of data flwo dram->up

  SIGNAL rd_wr_just_terminated: STD_LOGIC;--It will logg the status that rd or 
                              --write is just terminated. and and auto precharge 
                              --is needed.It is here to let autoprecharge be done
  SIGNAL dram_busy_sig : STD_LOGIC;--means that dram is doing auto_ref cycle.

--Signal Declaration Section Ends

--Constants Declaration Section
  CONSTANT mod_reg_val     : std_logic_vector(11 downto 0) := "000000100111";
  -- ll,10 = reserved, 
  -- 9 = '0' programmed burst length, Burst len applicable for rd and wr both 
  -- 8,7 = Op mode = 00
  -- 6,5,4 = CAS latency = 010 = cas latency of 2 
  -- 3 = Burst Type = '0' = Sequential
  -- 2,1,0 = Brust Length = 111 = Full Page Brust

  CONSTANT sd_init     : integer := 10000; -- = 1000 * f in MHz 
  CONSTANT trp         : integer := 4;     -- = 20 ns (20 ns < (trp - 1)* T);
  CONSTANT trfc        : integer := 8;     -- = 66 ns (66 ns < (trfc - 1)* T);
  CONSTANT tmrd        : integer := 3;     -- = 2 Wait time after Mode reg prog
  CONSTANT trcd        : integer := 2;     -- = 15 ns (15 ns < (trcd)*T)
                         --trcd is the time which must be consumed after the 
                         --issuence of ACTIVE and before any other command can
                         --be issued

  CONSTANT auto_ref_co : integer := 780;   -- = auto_ref_co > 7.81 * F in MHz

---------------------------------------------------------------rc-dd
--------------------------------------------------------------caawqq
--------------------------------------------------------------sssemm
  CONSTANT inhibit         : std_logic_vector(5 downto 0) := "111111";
  CONSTANT nop             : std_logic_vector(5 downto 0) := "011111";
  CONSTANT active          : std_logic_vector(5 downto 0) := "001111";
  CONSTANT read            : std_logic_vector(5 downto 0) := "010100"; --tbd
  CONSTANT write           : std_logic_vector(5 downto 0) := "010000"; --tbd
  CONSTANT burst_terminate : std_logic_vector(5 downto 0) := "011011";
  CONSTANT precharge       : std_logic_vector(5 downto 0) := "001011";
  CONSTANT auto_ref        : std_logic_vector(5 downto 0) := "000111";
  CONSTANT load_mode_reg   : std_logic_vector(5 downto 0) := "000011";

  CONSTANT read_high_byte  : std_logic_vector(5 downto 0) := "011111"; --tbd
  CONSTANT read_low_byte   : std_logic_vector(5 downto 0) := "011111"; --tbd
  CONSTANT write_high_byte : std_logic_vector(5 downto 0) := "011111"; --tbd
  CONSTANT write_low_byte  : std_logic_vector(5 downto 0) := "011111"; --tbd

  CONSTANT rd_wr_in_prog   : std_logic_vector(5 downto 0) := "011100"; --tbd
  --the above constant signifies that a read or wirte burst is in progress
  --dqms are 00 else it is a NOP

--Constants Declaration Section Ends

BEGIN

--Steps needed by SDRAM to intitialize

--#1. Power up initialization time taken 100 us, one, either NOP or INHIBIT
--    Command is MUST within this period -- as per specs

--#2. PRECHARGE Command MUST be issued

--#3. 2 AUTO REFRESH cycles MUST be performed

--#4. Mode Register may be programmed now.

--Steps needed by SDRAM to initialize Ends

--Steps needed by SDRAM to write data

--#1). Get the address from up, store the address, Activate the corresponding
--     Row. by providing A0 to A12(which will select the ROW) and BA0, BA1
--     which will select the Coloumn
--
--#2). Wait for trcd = 15 ns  while putting NOP on the command bus
--     provide  A0 through A9, A11 in case of (x4), A0 through A9 in case of
--     (x8) , A0 through A8 in case of (x16). We will use (x8)
--#3). Issue the Coloumn address with the choice of A10 = 0 for Disable Auto
--     Precharge, A10 = 1 for Enable Auto Precharge.We will use Auto Precharge
--     DISABLED But here in case of Burst length = full page we do not need
--     A10 functiionality since it is not used in this cycle.

--Steps needed by SDRAM to write data Ends


--Steps needed by SDRAM to Maintain data

--The SDRAM MUST be AUTO REFERESHED every 7.81 us or 7810 ns
--if f is the clock freq, then T = 1/f, so n * 1/F = 7810,so n=7.81*f in MHz
--Here f = 100 MHz, so n = 781. Every 781 clocks, an Auto Ref is needed.
--It may be possible, to apply 8192 Auto refs Once in 64 ms or Once in
--64000 * f in HHz clock cycles, we take f  100 MHz, so every 6400000 clock 
--cycles, we need a burst of 8192 Auto refereshs

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
暴力调教一区二区三区| 国产欧美一区二区精品仙草咪| 国产精品久久久久一区| 黑人巨大精品欧美黑白配亚洲| 日韩一区二区影院| 日本免费新一区视频 | 亚洲国产精品一区二区久久| 成人国产精品视频| 国产精品久久一级| 成人av免费在线观看| 中文av一区特黄| 国产69精品久久99不卡| 国产精品你懂的在线| 成人午夜av影视| 国产精品成人免费在线| av亚洲精华国产精华精华| 亚洲欧美综合另类在线卡通| 99re这里都是精品| 玉米视频成人免费看| 欧美在线观看一二区| 亚洲成年人影院| 亚洲主播在线播放| 日韩激情视频网站| 51久久夜色精品国产麻豆| 天天爽夜夜爽夜夜爽精品视频| 欧美理论片在线| 日韩激情视频网站| 欧美不卡视频一区| 国产精品一区二区在线播放 | 精品视频一区二区三区免费| 一区二区三区四区在线播放 | 26uuu国产日韩综合| 国产一区二三区好的| 久久精品免费在线观看| 成人精品国产一区二区4080| 亚洲精品乱码久久久久| 欧美日韩aaaaaa| 精品一区二区久久久| 国产精品视频线看| 日本道精品一区二区三区| 五月激情综合色| 久久一二三国产| 91热门视频在线观看| 石原莉奈在线亚洲二区| 久久蜜桃一区二区| 91黄色激情网站| 蜜臀国产一区二区三区在线播放| 日韩三级免费观看| 国产自产高清不卡| 亚洲欧美怡红院| 欧美喷水一区二区| 国产精品99久久久久久宅男| 日韩理论片中文av| 欧美一卡在线观看| 成人涩涩免费视频| 日日夜夜精品视频天天综合网| 久久久久久久久久久久久女国产乱| av亚洲精华国产精华| 日韩精品三区四区| 中文字幕av资源一区| 欧美日韩夫妻久久| 成人中文字幕在线| 视频一区在线播放| 国产精品久久久久久久岛一牛影视| 精品视频免费在线| 国产电影一区在线| 丝袜脚交一区二区| 中国av一区二区三区| 欧美老肥妇做.爰bbww视频| 国产成a人无v码亚洲福利| 亚洲国产一区在线观看| 久久久久国产精品厨房| 欧美日韩在线亚洲一区蜜芽| 国产成人亚洲综合a∨婷婷图片| 亚洲成人动漫在线观看| 国产欧美日韩在线视频| 欧美精品欧美精品系列| 99久久免费视频.com| 美女爽到高潮91| 亚洲最色的网站| 中文字幕精品综合| 日韩精品一区二区在线观看| 在线欧美一区二区| 激情综合网av| 樱花影视一区二区| 久久久久国产精品厨房| 51午夜精品国产| 91蝌蚪国产九色| 国产精品一区二区在线观看不卡 | 91视频在线看| 国产一区二区三区综合| 午夜精品久久久久久久久久久 | 国产精品嫩草99a| 日韩一二在线观看| 欧美日韩一区二区三区四区| 成人免费毛片aaaaa**| 韩国v欧美v亚洲v日本v| 五月天婷婷综合| 一区二区三区四区av| 国产精品你懂的在线欣赏| 久久网站热最新地址| 欧美一区二区三区免费大片| 国产精品久久精品日日| 精品1区2区在线观看| 7777精品伊人久久久大香线蕉的| 色婷婷精品大在线视频| 波多野结衣精品在线| 国产激情视频一区二区在线观看 | 日韩一区二区在线观看| 在线免费观看日本一区| www.成人在线| 成人性色生活片免费看爆迷你毛片| 裸体健美xxxx欧美裸体表演| 日韩高清不卡一区二区三区| 亚洲最大成人网4388xx| 亚洲精品中文字幕在线观看| 国产精品久久夜| 国产精品久久久久9999吃药| 中文字幕免费不卡| 中文字幕免费不卡| 中文字幕不卡三区| 国产精品拍天天在线| 中文字幕欧美区| 欧美国产日韩a欧美在线观看| 国产调教视频一区| 国产亚洲污的网站| 国产亲近乱来精品视频| 国产亚洲精品bt天堂精选| 久久久.com| 欧美激情自拍偷拍| 国产精品久久毛片| 国产精品电影一区二区| 中文字幕中文乱码欧美一区二区| 国产精品久久久久久久裸模| 国产精品免费视频网站| 中文字幕一区二区三区av| 最新不卡av在线| 亚洲精品福利视频网站| 亚洲福利国产精品| 日韩不卡一二三区| 麻豆成人综合网| 国内外成人在线| 粉嫩一区二区三区在线看| 成人高清视频在线| 日本精品一级二级| 欧美日韩大陆在线| 日韩欧美一级二级| 久久久久久久精| 国产精品免费视频一区| 亚洲裸体xxx| 午夜欧美大尺度福利影院在线看| 日韩不卡一二三区| 国产乱子伦一区二区三区国色天香 | 国产欧美日韩精品一区| 国产精品久久久久久久久久久免费看 | 欧美日韩成人综合| 欧美mv日韩mv亚洲| 国产女人18水真多18精品一级做| 综合久久综合久久| 亚洲成国产人片在线观看| 免费欧美日韩国产三级电影| 激情久久五月天| www.欧美色图| 欧美日韩国产美女| 2023国产精品自拍| 国产精品国模大尺度视频| 一卡二卡欧美日韩| 久久99热99| 99久久er热在这里只有精品66| 欧美日韩国产综合一区二区三区| 日韩精品一区二区三区视频 | 国产精品剧情在线亚洲| 艳妇臀荡乳欲伦亚洲一区| 免费在线看成人av| 成人性生交大合| 欧美日韩国产高清一区二区三区 | 欧美国产欧美综合| 色国产综合视频| 精品国产污污免费网站入口 | 一本久久精品一区二区| 欧美日韩视频专区在线播放| 欧美成人精品福利| 一区二区中文字幕在线| 日日摸夜夜添夜夜添亚洲女人| 国产精品一区二区久激情瑜伽| 色综合视频在线观看| 日韩手机在线导航| 亚洲视频一二三区| 日本一区中文字幕| 99re这里只有精品视频首页| 日韩一级黄色片| 亚洲色图在线播放| 久久精品国产在热久久| 91小视频在线免费看| 精品国产乱码久久久久久图片 | 欧美久久久久久久久久| 久久久五月婷婷| 午夜精品久久一牛影视| kk眼镜猥琐国模调教系列一区二区| 欧美电影一区二区|