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

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

?? mt48lc2m32b2_2.vhd

?? sdram controller in vhdl
?? VHD
?? 第 1 頁 / 共 4 頁
字號:
-----------------------------------------------------------------------------------------
--
--     File Name: MT48LC2M32B2.VHD
--       Version: 1.0
--          Date: Sept 10th, 2001
--         Model: Behavioral
--     Simulator: Model Technology
--
--  Dependencies: None
--
--        Author: Yong Phan
--         Email: yjphan@micron.com
--         Phone: (208) 363-2184
--       Company: Micron Technology, Inc.
--   Part Number: MT48LC2M32B2 (512K x 32 x 4 Banks)
--
--   Description: Micron 64Mb SDRAM
--
--    Limitation: - Doesn't check for 4096-cycle refresh
--
--          Note: - Set simulator resolution to "ps" accuracy
--
--    Disclaimer: THESE DESIGNS ARE PROVIDED "AS IS" WITH NO WARRANTY 
--                WHATSOEVER AND MICRON SPECIFICALLY DISCLAIMS ANY 
--                IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
--                A PARTICULAR PURPOSE, OR AGAINST INFRINGEMENT.
--
--                Copyright (c) 2001 Micron Semiconductor Products, Inc.
--                All rights researved
--
-- Rev  Author          Phone/Mail           Date        Changes
-- ---  --------------  --------------       ----------  -------------------------------------
-- 3.0  Rafal Janta		rafal@alatek.com.pl	 11/12/2002	 - Disjoin data bus 
--      Alatek				
--
--  ----  ----------------------------       ----------  -------------------------------------
--  0.0g  Son Huynh       208-368-3825  05/19/2000  Fix tWR + tRP timing
--        Micron Technology Inc.
--  1.0   Yong Phan       208-363-2184  09/10/2001  Add Load/Unload Function
--        Micron Technology Inc.
-- 
-----------------------------------------------------------------------------------------

LIBRARY std;
    USE std.textio.ALL;
LIBRARY ieee;
    USE ieee.std_logic_1164.ALL;
    USE ieee.std_logic_unsigned.conv_integer;
    USE ieee.std_logic_arith.conv_std_logic_vector;

ENTITY mt48lc2m32b2 IS
    GENERIC (
        -- Timing Parameters for -6 and CAS Latency = 2
        tOH       : TIME    :=  2.0 ns;
        tMRD      : INTEGER :=  2;          -- 2 Clk Cycles
        tRAS      : TIME    := 42.0 ns;
        tRC       : TIME    := 60.0 ns;
        tRCD      : TIME    := 18.0 ns;
        tRP       : TIME    := 18.0 ns;
        tRRD      : TIME    := 12.0 ns;
        tWRa      : TIME    :=  6.0 ns;     -- A2 Version - Auto precharge mode only (1 Clk + 6 ns)
        tWRp      : TIME    := 12.0 ns;     -- A2 Version - Precharge mode only (12 ns)

        tAS       : TIME    :=  1.5 ns;
        tCH       : TIME    :=  2.5 ns;
        tCL       : TIME    :=  2.5 ns;
        tCK       : TIME    := 10.5 ns;
        tDH       : TIME    :=  1.0 ns;
        tDS       : TIME    :=  1.5 ns;
        tCKH      : TIME    :=  1.0 ns;
        tCKS      : TIME    :=  1.5 ns;
 		tCMH      : TIME    :=  0 ns;
        tCMS      : TIME    :=  0 ns;
		
        addr_bits : INTEGER := 11;
        data_bits : INTEGER := 32;
        col_bits  : INTEGER :=  8
    );
    PORT (
        Dq_in     : IN  STD_LOGIC_VECTOR (data_bits - 1 DOWNTO 0) := (OTHERS => 'Z');
        Dq_out    : OUT STD_LOGIC_VECTOR (data_bits - 1 DOWNTO 0) := (OTHERS => 'Z');
        Dq_dir    : OUT STD_LOGIC_VECTOR (3 downto 0) := (OTHERS=>'0');
       	Addr      : IN    STD_LOGIC_VECTOR (addr_bits - 1 DOWNTO 0) := (OTHERS => '0');
        Ba        : IN    STD_LOGIC_VECTOR := "00";
        Clk       : IN    STD_LOGIC := '0';
        Cke       : IN    STD_LOGIC := '0';
        Cs_n      : IN    STD_LOGIC := '1';
        Ras_n     : IN    STD_LOGIC := '0';
        Cas_n     : IN    STD_LOGIC := '0';
        We_n      : IN    STD_LOGIC := '0';
        Dqm       : IN    STD_LOGIC_VECTOR (3 DOWNTO 0) := (OTHERS => '0')
    );
END mt48lc2m32b2;

ARCHITECTURE behave OF mt48lc2m32b2 IS
    TYPE   State       IS (ACT, A_REF, BST, LMR, NOP, PRECH, READ, READ_A, WRITE, WRITE_A, FILE_LOAD, FILE_UNLOAD);
    TYPE   Array4xI    IS ARRAY (3 DOWNTO 0) OF INTEGER;
    TYPE   Array4xT    IS ARRAY (3 DOWNTO 0) OF TIME;
    TYPE   Array4xSL   IS ARRAY (3 DOWNTO 0) OF STD_LOGIC;
    TYPE   Array4x2SLV IS ARRAY (3 DOWNTO 0) OF STD_LOGIC_VECTOR (1 DOWNTO 0);                -- For Bank Pipeline
    TYPE   Array2x4SLV IS ARRAY (1 DOWNTO 0) OF STD_LOGIC_VECTOR (3 DOWNTO 0);                -- For Dqm Pipeline
    TYPE   Array4xCSLV IS ARRAY (4 DOWNTO 0) OF STD_LOGIC_VECTOR (Col_bits - 1 DOWNTO 0);     -- For Column Pipeline
    TYPE   Array_state IS ARRAY (4 DOWNTO 0) OF State;
    SIGNAL Operation : State := NOP;
    SIGNAL Mode_reg : STD_LOGIC_VECTOR (addr_bits - 1 DOWNTO 0) := (OTHERS => '0');
    SIGNAL Active_enable, Aref_enable, Burst_term : STD_LOGIC := '0';
    SIGNAL Mode_reg_enable, Prech_enable, Read_enable, Write_enable : STD_LOGIC := '0';
    SIGNAL Burst_length_1, Burst_length_2, Burst_length_4, Burst_length_8 : STD_LOGIC := '0';
    SIGNAL Cas_latency_1, Cas_latency_2, Cas_latency_3 : STD_LOGIC := '0';
    SIGNAL Cs_in, Ras_in, Cas_in, We_in : STD_LOGIC := '0';
    SIGNAL Write_burst_mode : STD_LOGIC := '0';
    SIGNAL RAS_clk, Sys_clk, CkeZ : STD_LOGIC := '0';

BEGIN
    -- Strip the strength
    Cs_in  <= To_X01 (Cs_n);
    Ras_in <= To_X01 (Ras_n);
    Cas_in <= To_X01 (Cas_n);
    We_in  <= To_X01 (We_n);
    
    -- Commands Decode
    Active_enable   <= NOT(Cs_in) AND NOT(Ras_in) AND     Cas_in  AND     We_in;
    Aref_enable     <= NOT(Cs_in) AND NOT(Ras_in) AND NOT(Cas_in) AND     We_in;
    Burst_term      <= NOT(Cs_in) AND     Ras_in  AND     Cas_in  AND NOT(We_in);
    Mode_reg_enable <= NOT(Cs_in) AND NOT(Ras_in) AND NOT(Cas_in) AND NOT(We_in);
    Prech_enable    <= NOT(Cs_in) AND NOT(Ras_in) AND     Cas_in  AND NOT(We_in);
    Read_enable     <= NOT(Cs_in) AND     Ras_in  AND NOT(Cas_in) AND     We_in;
    Write_enable    <= NOT(Cs_in) AND     Ras_in  AND NOT(Cas_in) AND NOT(We_in);

    -- Burst Length Decode
    Burst_length_1  <= NOT(Mode_reg(2)) AND NOT(Mode_reg(1)) AND NOT(Mode_reg(0));
    Burst_length_2  <= NOT(Mode_reg(2)) AND NOT(Mode_reg(1)) AND     Mode_reg(0);
    Burst_length_4  <= NOT(Mode_reg(2)) AND     Mode_reg(1)  AND NOT(Mode_reg(0));
    Burst_length_8  <= NOT(Mode_reg(2)) AND     Mode_reg(1)  AND     Mode_reg(0);

    -- CAS Latency Decode
    Cas_latency_1   <= NOT(Mode_reg(6)) AND NOT(Mode_reg(5)) AND     Mode_reg(4);
    Cas_latency_2   <= NOT(Mode_reg(6)) AND     Mode_reg(5)  AND NOT(Mode_reg(4));
    Cas_latency_3   <= NOT(Mode_reg(6)) AND     Mode_reg(5)  AND     Mode_reg(4);

    -- Write Burst Mode
    Write_burst_mode <= Mode_reg(9);

    -- RAS Clock for checking tWR and tRP
    PROCESS
        variable Clk0, Clk1 : integer := 0;
    begin
        RAS_clk <= '1';
        wait for 0.5 ns;
        RAS_clk <= '0';
        wait for 0.5 ns;
    END PROCESS;

    -- System Clock
    int_clk : PROCESS (Clk)
        begin
            IF Clk'LAST_VALUE = '0' AND Clk = '1' THEN
                CkeZ <= Cke;
            END IF;
            Sys_clk <= CkeZ AND Clk;
    END PROCESS;

    state_register : PROCESS
        TYPE ram_type IS ARRAY (2**col_bits - 1 DOWNTO 0) OF STD_LOGIC_VECTOR (data_bits - 1 DOWNTO 0);
        TYPE ram_pntr IS ACCESS ram_type;
        TYPE ram_stor IS ARRAY (2**addr_bits - 1 DOWNTO 0) OF ram_pntr;
        VARIABLE Bank0 : ram_stor;
        VARIABLE Bank1 : ram_stor;
        VARIABLE Bank2 : ram_stor;
        VARIABLE Bank3 : ram_stor;
        VARIABLE Row_index, Col_index : INTEGER := 0;
        VARIABLE Dq_temp : STD_LOGIC_VECTOR (data_bits - 1 DOWNTO 0) := (OTHERS => '0');

        VARIABLE Col_addr : Array4xCSLV;
        VARIABLE Bank_addr : Array4x2SLV;
        VARIABLE Dqm_reg0, Dqm_reg1 : STD_LOGIC_VECTOR (3 DOWNTO 0) := "0000";

        VARIABLE Bank, Previous_bank : STD_LOGIC_VECTOR (1 DOWNTO 0) := "00";
        VARIABLE B0_row_addr, B1_row_addr, B2_row_addr, B3_row_addr : STD_LOGIC_VECTOR (addr_bits - 1 DOWNTO 0) := (OTHERS => '0');
        VARIABLE Col_brst : STD_LOGIC_VECTOR (col_bits - 1 DOWNTO 0) := (OTHERS => '0');
        VARIABLE Row : STD_LOGIC_VECTOR (addr_bits - 1 DOWNTO 0) := (OTHERS => '0');
        VARIABLE Col : STD_LOGIC_VECTOR (col_bits - 1 DOWNTO 0) := (OTHERS => '0');
        VARIABLE Burst_counter : INTEGER := 0;

        VARIABLE Command : Array_state;
        VARIABLE Bank_precharge : Array4x2SLV;
        VARIABLE A10_precharge : Array4xSL := ('0' & '0' & '0' & '0');
        VARIABLE Auto_precharge : Array4xSL := ('0' & '0' & '0' & '0');
        VARIABLE Read_precharge : Array4xSL := ('0' & '0' & '0' & '0');
        VARIABLE Write_precharge : Array4xSL := ('0' & '0' & '0' & '0');
        VARIABLE RW_interrupt_write : Array4xSL := ('0' & '0' & '0' & '0');
        VARIABLE RW_interrupt_read : Array4xSL := ('0' & '0' & '0' & '0');
        VARIABLE RW_interrupt_bank : STD_LOGIC_VECTOR (1 DOWNTO 0) := "00";
        VARIABLE Count_time : Array4xT := (0 ns & 0 ns & 0 ns & 0 ns);
        VARIABLE Count_precharge : Array4xI := (0 & 0 & 0 & 0);

        VARIABLE Data_in_enable, Data_out_enable : STD_LOGIC := '0';
        VARIABLE Pc_b0, Pc_b1, Pc_b2, Pc_b3 : STD_LOGIC := '0';
        VARIABLE Act_b0, Act_b1, Act_b2, Act_b3 : STD_LOGIC := '0';

        -- Timing Check
        VARIABLE MRD_chk : INTEGER := 0;
        VARIABLE WR_counter : Array4xI := (0 & 0 & 0 & 0);
        VARIABLE WR_time : Array4xT := (0 ns & 0 ns & 0 ns & 0 ns);
        VARIABLE WR_chkp : Array4xT := (0 ns & 0 ns & 0 ns & 0 ns);
        VARIABLE RC_chk, RRD_chk : TIME := 0 ns;
        VARIABLE RAS_chk0, RAS_chk1, RAS_chk2, RAS_chk3 : TIME := 0 ns;
        VARIABLE RCD_chk0, RCD_chk1, RCD_chk2, RCD_chk3 : TIME := 0 ns;
        VARIABLE RP_chk0, RP_chk1, RP_chk2, RP_chk3 : TIME := 0 ns;

 
        -- Load and Unload variables
        VARIABLE l_in, l_out0, l_out1, l_out2, l_out3 : LINE;
        VARIABLE array_buffer : STD_LOGIC_VECTOR (data_bits - 1 DOWNTO 0) := (OTHERS => '0');
        VARIABLE row_load : BIT_VECTOR (addr_bits - 1 DOWNTO 0);
        VARIABLE col_load : BIT_VECTOR (col_bits - 1 DOWNTO 0);
        VARIABLE ba_load : BIT_VECTOR (1 DOWNTO 0);
        VARIABLE dq_vec : STD_LOGIC_VECTOR (data_bits - 1 DOWNTO 0);
        VARIABLE row_load_int,i, j, k : INTEGER;
        
        -- Initialize empty rows
        PROCEDURE Init_mem (Bank : STD_LOGIC_VECTOR (1 DOWNTO 0); Row_index : INTEGER) IS
            VARIABLE i, j : INTEGER := 0;
        BEGIN
            IF Bank = "00" THEN
                IF Bank0 (Row_index) = NULL THEN                        -- Check to see if row empty
                    Bank0 (Row_index) := NEW ram_type;                  -- Open new row for access
                    FOR i IN (2**col_bits - 1) DOWNTO 0 LOOP            -- Filled row with zeros
                        FOR j IN (data_bits - 1) DOWNTO 0 LOOP
                            Bank0 (Row_index) (i) (j) := '0';
                        END LOOP;
                    END LOOP;
                END IF;
            ELSIF Bank = "01" THEN
                IF Bank1 (Row_index) = NULL THEN
                    Bank1 (Row_index) := NEW ram_type;
                    FOR i IN (2**col_bits - 1) DOWNTO 0 LOOP
                        FOR j IN (data_bits - 1) DOWNTO 0 LOOP
                            Bank1 (Row_index) (i) (j) := '0';
                        END LOOP;
                    END LOOP;
                END IF;
            ELSIF Bank = "10" THEN
                IF Bank2 (Row_index) = NULL THEN
                    Bank2 (Row_index) := NEW ram_type;
                    FOR i IN (2**col_bits - 1) DOWNTO 0 LOOP
                        FOR j IN (data_bits - 1) DOWNTO 0 LOOP
                            Bank2 (Row_index) (i) (j) := '0';
                        END LOOP;
                    END LOOP;
                END IF;
            ELSIF Bank = "11" THEN
                IF Bank3 (Row_index) = NULL THEN
                    Bank3 (Row_index) := NEW ram_type;
                    FOR i IN (2**col_bits - 1) DOWNTO 0 LOOP
                        FOR j IN (data_bits - 1) DOWNTO 0 LOOP
                            Bank3 (Row_index) (i) (j) := '0';
                        END LOOP;
                    END LOOP;
                END IF;
            END IF;
        END;
            
        -- Burst Counter
        PROCEDURE Burst_decode IS
            VARIABLE Col_int : INTEGER := 0;
            VARIABLE Col_vec, Col_temp : STD_LOGIC_VECTOR (col_bits - 1 DOWNTO 0) := (OTHERS => '0');
        BEGIN
            -- Advance Burst Counter
            Burst_counter := Burst_counter + 1;

            -- Burst Type
            IF Mode_reg (3) = '0' THEN
                Col_int := conv_integer(Col) + 1;
                Col_temp := CONV_STD_LOGIC_VECTOR(Col_int, col_bits);
            ELSIF Mode_reg (3) = '1' THEN
                Col_vec := CONV_STD_LOGIC_VECTOR(Burst_counter, col_bits);
                Col_temp (2) := Col_vec (2) XOR Col_brst (2);
                Col_temp (1) := Col_vec (1) XOR Col_brst (1);
                Col_temp (0) := Col_vec (0) XOR Col_brst (0);
            END IF;

            -- Burst Length
            IF Burst_length_2 = '1' THEN
                Col (0) := Col_temp (0);
            ELSIF Burst_length_4 = '1' THEN
                Col (1 DOWNTO 0) := Col_temp (1 DOWNTO 0);
            ELSIF Burst_length_8 = '1' THEN
                Col (2 DOWNTO 0) := Col_temp (2 DOWNTO 0);
            ELSE
                Col := Col_temp;
            END IF;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区不卡| 在线观看欧美日本| 色综合久久88色综合天天6 | 亚洲少妇中出一区| 肉色丝袜一区二区| av亚洲精华国产精华精华| 欧美日韩国产免费| 国产亚洲欧美一级| 日韩av一区二区三区| 95精品视频在线| 国产亚洲精品精华液| 日本不卡一区二区三区| 91网站视频在线观看| 久久综合九色综合久久久精品综合 | 精品国产一区二区三区久久影院 | 久久久精品国产免费观看同学| 亚洲欧美日韩国产中文在线| 蜜桃一区二区三区在线| 欧美性受xxxx黑人xyx性爽| 欧美国产日韩亚洲一区| 免费精品99久久国产综合精品| 91福利在线看| 中文字幕中文字幕一区二区| 狠狠色丁香婷婷综合久久片| 91精品国产色综合久久ai换脸| 亚洲一区二区免费视频| av成人动漫在线观看| 欧美成va人片在线观看| 日韩精品色哟哟| 欧美日韩国产经典色站一区二区三区 | 国产一区不卡在线| 欧美日本国产视频| 亚洲福中文字幕伊人影院| 99久久99久久久精品齐齐| 国产亚洲一区二区三区在线观看 | 国产高清精品在线| 2021中文字幕一区亚洲| 国内精品在线播放| 久久综合色婷婷| 国产精品资源站在线| 精品国产一二三| 中文字幕亚洲精品在线观看| 国产精品亚洲第一区在线暖暖韩国| 欧美成人欧美edvon| 国产在线精品一区二区夜色| 久久先锋影音av| 国产精品综合久久| 国产精品福利一区| 在线观看91视频| 婷婷久久综合九色国产成人 | 色婷婷久久一区二区三区麻豆| 国产精品不卡在线| 色视频成人在线观看免| 另类成人小视频在线| 欧美丰满少妇xxxbbb| 免费av成人在线| 久久影视一区二区| 99综合影院在线| 亚洲一区在线观看视频| 欧美一区二区三区四区五区| 日韩av在线发布| 亚洲精品在线电影| 成人综合在线网站| 亚洲最新视频在线播放| 国产黄色精品视频| 亚洲综合在线视频| 欧美日韩国产综合视频在线观看| 美日韩一区二区三区| 精品成人一区二区| av男人天堂一区| 亚洲一区电影777| 久久视频一区二区| 成人高清视频免费观看| 天堂蜜桃91精品| 精品第一国产综合精品aⅴ| 91免费版pro下载短视频| 亚洲综合色成人| 日本一区二区久久| 91色乱码一区二区三区| 麻豆精品一区二区av白丝在线| 久久久五月婷婷| 色天天综合色天天久久| 亚洲女子a中天字幕| 欧美成人aa大片| www.日韩在线| 国产精品一区二区在线观看网站| 国产精品人成在线观看免费| 日韩视频123| eeuss鲁片一区二区三区在线观看| 午夜精品国产更新| 国产精品嫩草99a| 精品国产自在久精品国产| 成人福利视频在线看| 九九热在线视频观看这里只有精品| 中文字幕免费观看一区| 精品免费日韩av| 色综合一个色综合| 丁香激情综合五月| 日韩av电影免费观看高清完整版在线观看 | 成人高清免费在线播放| 日本欧美一区二区三区| 亚洲一区二区影院| 国产精品麻豆久久久| 久久亚洲影视婷婷| 欧美日韩国产中文| 欧美最猛黑人xxxxx猛交| 紧缚奴在线一区二区三区| 午夜精品福利久久久| ...av二区三区久久精品| 久久综合中文字幕| 欧美日韩在线一区二区| 99精品国产热久久91蜜凸| 国产一区二区调教| 蜜桃av一区二区三区| 亚洲国产成人av| 亚洲一区免费视频| 亚洲免费av高清| 亚洲欧美日本韩国| 337p粉嫩大胆色噜噜噜噜亚洲| 91老司机福利 在线| 粉嫩aⅴ一区二区三区四区| 风间由美一区二区av101| 亚洲综合另类小说| 一区二区欧美精品| 一区二区三区四区不卡在线| 欧美三级中文字| 在线一区二区观看| 欧美在线观看视频一区二区三区| 成人av影院在线| 色综合久久九月婷婷色综合| 99国产一区二区三精品乱码| 一本色道**综合亚洲精品蜜桃冫| 成人h动漫精品一区二区 | 激情都市一区二区| 国产老肥熟一区二区三区| 韩国av一区二区| 成人小视频免费观看| 成人中文字幕在线| 91成人网在线| 欧美日韩一区二区三区四区| 在线播放亚洲一区| 精品日产卡一卡二卡麻豆| 久久精品视频一区| 国产精品国产三级国产三级人妇| 一区二区三区高清| 一区二区三区四区不卡在线 | 成人久久久精品乱码一区二区三区| 国产91精品精华液一区二区三区 | 国产精品久久久爽爽爽麻豆色哟哟| 久久九九全国免费| 国产精品久久免费看| 亚洲高清免费一级二级三级| 日韩精品五月天| 成人高清视频在线观看| 欧美午夜免费电影| 久久网站最新地址| 一区二区成人在线视频| 经典三级视频一区| 91视频在线看| 精品国产免费人成在线观看| 国产亚洲精品aa午夜观看| 亚洲成人一二三| 久久精品国产成人一区二区三区| 99精品一区二区三区| 欧美久久久久久久久久| 国产精品全国免费观看高清| 中文子幕无线码一区tr| 亚洲777理论| 粉嫩高潮美女一区二区三区| 欧美私人免费视频| 久久久精品国产免大香伊| 日日骚欧美日韩| 国产乱对白刺激视频不卡| 91精品一区二区三区久久久久久| 日韩精品自拍偷拍| 一区二区三区四区不卡视频| 成年人网站91| 欧美电视剧在线看免费| 亚洲激情综合网| 久久福利视频一区二区| 色先锋久久av资源部| 精品国产不卡一区二区三区| 亚洲精品乱码久久久久久久久 | 日韩美女视频一区二区在线观看| 夜色激情一区二区| 国产精品自产自拍| 国产亚洲制服色| 亚洲午夜av在线| 国产一区二区三区久久悠悠色av| 91麻豆swag| 国产精品美女一区二区三区 | 久久噜噜亚洲综合| 亚洲制服丝袜av| 国产91清纯白嫩初高中在线观看| av在线综合网| 精品国产不卡一区二区三区| 日韩欧美国产综合在线一区二区三区| 亚洲欧美日韩在线不卡| 国产另类ts人妖一区二区| 色狠狠一区二区|