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

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

?? mt46v16m16.vhd

?? ddr verilog代碼,實現DDR內存控制
?? VHD
?? 第 1 頁 / 共 4 頁
字號:
                Cols_addr (0) := Cols_temp (0);
            ELSIF Burst_length_4 = '1' THEN
                Cols_addr (1 DOWNTO 0) := Cols_temp (1 DOWNTO 0);
            ELSIF Burst_length_8 = '1' THEN
                Cols_addr (2 DOWNTO 0) := Cols_temp (2 DOWNTO 0);
            ELSE
                Cols_addr := Cols_temp;
            END IF;

            -- Data counter
            IF Burst_length_2 = '1' THEN
                IF Burst_counter >= 2 THEN
                    IF Data_in_enable = '1' THEN
                        Data_in_enable := '0';
                    ELSIF Data_out_enable = '1' THEN
                        Data_out_enable := '0';
                    END IF;
                END IF;
            ELSIF Burst_length_4 = '1' THEN
                IF Burst_counter >= 4 THEN
                    IF Data_in_enable = '1' THEN
                        Data_in_enable := '0';
                    ELSIF Data_out_enable = '1' THEN
                        Data_out_enable := '0';
                    END IF;
                END IF;
            ELSIF Burst_length_8 = '1' THEN
                IF Burst_counter >= 8 THEN
                    IF Data_in_enable = '1' THEN
                        Data_in_enable := '0';
                    ELSIF Data_out_enable = '1' THEN
                        Data_out_enable := '0';
                    END IF;
                END IF;
            END IF;
        END;

    BEGIN
        WAIT ON Sys_clk;

        --
        -- Manual Precharge Pipeline
        --
        IF ((Sys_clk'EVENT AND Sys_clk = '0') OR (Sys_clk'EVENT AND Sys_clk = '1')) THEN
            -- A10 Precharge Pipeline
            A10_precharge(0) := A10_precharge(1);
            A10_precharge(1) := A10_precharge(2);
            A10_precharge(2) := A10_precharge(3);
            A10_precharge(3) := A10_precharge(4);
            A10_precharge(4) := A10_precharge(5);
            A10_precharge(5) := A10_precharge(6);
            A10_precharge(6) := A10_precharge(7);
            A10_precharge(7) := A10_precharge(8);
            A10_precharge(8) := '0';

            -- Bank Precharge Pipeline
            Bank_precharge(0) := Bank_precharge(1);
            Bank_precharge(1) := Bank_precharge(2);
            Bank_precharge(2) := Bank_precharge(3);
            Bank_precharge(3) := Bank_precharge(4);
            Bank_precharge(4) := Bank_precharge(5);
            Bank_precharge(5) := Bank_precharge(6);
            Bank_precharge(6) := Bank_precharge(7);
            Bank_precharge(7) := Bank_precharge(8);
            Bank_precharge(8) := "00";

            -- Command Precharge Pipeline
            Cmnd_precharge(0) := Cmnd_precharge(1);
            Cmnd_precharge(1) := Cmnd_precharge(2);
            Cmnd_precharge(2) := Cmnd_precharge(3);
            Cmnd_precharge(3) := Cmnd_precharge(4);
            Cmnd_precharge(4) := Cmnd_precharge(5);
            Cmnd_precharge(5) := Cmnd_precharge(6);
            Cmnd_precharge(6) := Cmnd_precharge(7);
            Cmnd_precharge(7) := Cmnd_precharge(8);
            Cmnd_precharge(8) := '0';

            -- Terminate Read if same bank or all banks
            IF ((Cmnd_precharge (0) = '1') AND
                (Bank_precharge (0) = Bank_addr OR A10_precharge (0) = '1') AND
                (Data_out_enable = '1')) THEN
                Data_out_enable := '0';
            END IF;
        END IF;

        --
        -- Burst Terminate Pipeline
        --
        IF ((Sys_clk'EVENT AND Sys_clk = '0') OR (Sys_clk'EVENT AND Sys_clk = '1')) THEN
            -- Burst Terminate pipeline
            Cmnd_bst (0) := Cmnd_bst (1);
            Cmnd_bst (1) := Cmnd_bst (2);
            Cmnd_bst (2) := Cmnd_bst (3);
            Cmnd_bst (3) := Cmnd_bst (4);
            Cmnd_bst (4) := Cmnd_bst (5);
            Cmnd_bst (5) := Cmnd_bst (6);
            Cmnd_bst (6) := Cmnd_bst (7);
            Cmnd_bst (7) := Cmnd_bst (8);
            Cmnd_bst (8) := '0';

            -- Terminate current Read
            IF ((Cmnd_bst  (0) = '1') AND (Data_out_enable = '1')) THEN
                Data_out_enable := '0';
            END IF;
        END IF;

        --
        -- Dq and Dqs Drivers
        --
        IF ((Sys_clk'EVENT AND Sys_clk = '0') OR (Sys_clk'EVENT AND Sys_clk = '1')) THEN
            -- Read Command Pipeline
            Read_cmnd (0) := Read_cmnd (1);
            Read_cmnd (1) := Read_cmnd (2);
            Read_cmnd (2) := Read_cmnd (3);
            Read_cmnd (3) := Read_cmnd (4);
            Read_cmnd (4) := Read_cmnd (5);
            Read_cmnd (5) := Read_cmnd (6);
            Read_cmnd (6) := Read_cmnd (7);
            Read_cmnd (7) := Read_cmnd (8);
            Read_cmnd (8) := '0';

            -- Read Bank Pipeline
            Read_bank (0) := Read_bank (1);
            Read_bank (1) := Read_bank (2);
            Read_bank (2) := Read_bank (3);
            Read_bank (3) := Read_bank (4);
            Read_bank (4) := Read_bank (5);
            Read_bank (5) := Read_bank (6);
            Read_bank (6) := Read_bank (7);
            Read_bank (7) := Read_bank (8);
            Read_bank (8) := "00";

            -- Read Column Pipeline
            Read_cols (0) := Read_cols (1);
            Read_cols (1) := Read_cols (2);
            Read_cols (2) := Read_cols (3);
            Read_cols (3) := Read_cols (4);
            Read_cols (4) := Read_cols (5);
            Read_cols (5) := Read_cols (6);
            Read_cols (6) := Read_cols (7);
            Read_cols (7) := Read_cols (8);
            Read_cols (8) := (OTHERS => '0');

            -- Initialize Read command
            IF Read_cmnd (0) = '1' THEN
                Data_out_enable := '1';
                Bank_addr := Read_bank (0);
                Cols_addr := Read_cols (0);
                Cols_brst := Cols_addr (2 DOWNTO 0);
                Burst_counter := (OTHERS => '0');

                -- Row address mux
                CASE Bank_addr IS
                    WHEN "00"   => Rows_addr := B0_row_addr;
                    WHEN "01"   => Rows_addr := B1_row_addr;
                    WHEN "10"   => Rows_addr := B2_row_addr;
                    WHEN OTHERS => Rows_addr := B3_row_addr;
                END CASE;
            END IF;

            -- Toggle Dqs during Read command
            IF Data_out_enable = '1' THEN
                Dqs_int := '0';
                IF Dqs_out = "00" THEN
                    Dqs_out <= "11";
                ELSIF Dqs_out = "11" THEN
                    Dqs_out <= "00";
                ELSE
                    Dqs_out <= "00";
                END IF;
            ELSIF Data_out_enable = '0' AND Dqs_int = '0' THEN
                Dqs_out <= "ZZ";
            END IF;

            -- Initialize Dqs for Read command
            IF Read_cmnd (2) = '1' THEN
                IF Data_out_enable = '0' THEN
                    Dqs_int := '1';
                    Dqs_out <= "00";
                END IF;
            END IF;

            -- Read Latch
            IF Data_out_enable = '1' THEN
                -- Initialize Memory
                Init_mem (Bank_addr, CONV_INTEGER(Rows_addr));
                
                -- Output Data
                CASE Bank_addr IS
                    WHEN "00"   => Dq <= Bank0 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
                    WHEN "01"   => Dq <= Bank1 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
                    WHEN "10"   => Dq <= Bank2 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
                    WHEN OTHERS => Dq <= Bank3 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
                END CASE;

                --  Increase Burst Counter
                Burst_decode;
            ELSE
                Dq <= (OTHERS => 'Z');
            END IF;
        END IF;

        --
        -- Write FIFO and DM Mask Logic
        --
        IF Sys_clk'EVENT AND Sys_clk = '1' THEN
            -- Write command pipeline
            Write_cmnd (0) := Write_cmnd (1);
            Write_cmnd (1) := Write_cmnd (2);
            Write_cmnd (2) := '0';

            -- Write command pipeline
            Write_bank (0) := Write_bank (1);
            Write_bank (1) := Write_bank (2);
            Write_bank (2) := "00";

            -- Write column pipeline
            Write_cols (0) := Write_cols (1);
            Write_cols (1) := Write_cols (2);
            Write_cols (2) := (OTHERS => '0');

            -- Initialize Write command
            IF Write_cmnd (0) = '1' THEN
                Data_in_enable := '1';
                Bank_addr := Write_bank (0);
                Cols_addr := Write_cols (0);
                Cols_brst := Cols_addr (2 DOWNTO 0);
                Burst_counter := (OTHERS => '0');

                -- Row address mux
                CASE Bank_addr IS
                    WHEN "00"   => Rows_addr := B0_row_addr;
                    WHEN "01"   => Rows_addr := B1_row_addr;
                    WHEN "10"   => Rows_addr := B2_row_addr;
                    WHEN OTHERS => Rows_addr := B3_row_addr;
                END CASE;
            END IF;

            -- Write data
            IF Data_in_enable = '1' THEN
                -- Initialize memory
                Init_mem (Bank_addr, CONV_INTEGER(Rows_addr));
                
                -- Write first data
                IF Dm_pair (1) = '0' OR Dm_pair (0) = '0' THEN
                    -- Data Buffer
                    CASE Bank_addr IS
                        WHEN "00"   => Data_buf := Bank0 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
                        WHEN "01"   => Data_buf := Bank1 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
                        WHEN "10"   => Data_buf := Bank2 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
                        WHEN OTHERS => Data_buf := Bank3 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
                    END CASE;

                    -- Perform DM Mask
                    IF Dm_pair (0) = '0' THEN
                        Data_buf ( 7 DOWNTO 0) := Dq_pair ( 7 DOWNTO 0);
                    END IF;
                    IF Dm_pair (1) = '0' THEN
                        Data_buf (15 DOWNTO 8) := Dq_pair (15 DOWNTO 8);
                    END IF;

                    -- Write Data
                    CASE Bank_addr IS
                        WHEN "00"   => Bank0 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
                        WHEN "01"   => Bank1 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
                        WHEN "10"   => Bank2 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
                        WHEN OTHERS => Bank3 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
                    END CASE;
                END IF;

                --  Increase Burst Counter
                Burst_decode;

                -- Write second data
                IF Dm_pair (3) = '0' OR Dm_pair (2) = '0' THEN
                    -- Data Buffer
                    CASE Bank_addr IS
                        WHEN "00"   => Data_buf := Bank0 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
                        WHEN "01"   => Data_buf := Bank1 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
                        WHEN "10"   => Data_buf := Bank2 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
                        WHEN OTHERS => Data_buf := Bank3 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr));
                    END CASE;

                    -- Perform DM Mask
                    IF Dm_pair (2) = '0' THEN
                        Data_buf ( 7 DOWNTO 0) := Dq_pair (23 DOWNTO 16);
                    END IF;
                    IF Dm_pair (3) = '0' THEN
                        Data_buf (15 DOWNTO 8) := Dq_pair (31 DOWNTO 24);
                    END IF;

                    -- Write Data
                    CASE Bank_addr IS
                        WHEN "00"   => Bank0 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
                        WHEN "01"   => Bank1 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
                        WHEN "10"   => Bank2 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
                        WHEN OTHERS => Bank3 (CONV_INTEGER(Rows_addr)) (CONV_INTEGER(Cols_addr)) := Data_buf;
                    END CASE;
                END IF;
                
                -- Increase Burst Counter
                Burst_decode;

                -- tWR start and tWTR check
                IF Dm_pair (3 DOWNTO 2) = "00" OR Dm_pair (1 DOWNTO 0) = "00" THEN
                    CASE Bank_addr IS
                        WHEN "00"   => WR_chk0 := NOW;
                        WHEN "01"   => WR_chk1 := NOW;
                        WHEN "10"   => WR_chk2 := NOW;
                        WHEN OTHERS => WR_chk3 := NOW;
                    END CASE;

                    -- tWTR check
                    ASSERT (Read_enable = '0')
                        REPORT "tWTR violation during Read"
                        SEVERITY WARNING;
                END IF;
            END IF;
        END IF;

        --
        -- Auto Precharge Calculation
        --
        IF Sys_clk'EVENT AND Sys_clk = '1' THEN
            -- Precharge counter
            IF Read_precharge (0) = '1' OR Write_precharge (0) = '1' THEN
                Count_precharge (0) := Count_precharge (0) + 1;
            END IF;
            IF Read_precharge (1) = '1' OR Write_precharge (1) = '1' THEN
                Count_precharge (1) := Count_precharge (1) + 1;
            END IF;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费成人在线观看视频| 中文字幕在线不卡视频| 日韩成人一区二区| 7799精品视频| 精品写真视频在线观看| 久久久久成人黄色影片| 成人精品国产福利| 亚洲欧洲精品天堂一级| 日本伦理一区二区| 免费成人小视频| 国产亚洲欧美日韩日本| 风流少妇一区二区| 一区二区三区在线看| 欧美人妖巨大在线| 国产一区中文字幕| 综合久久给合久久狠狠狠97色| 99久久综合99久久综合网站| 亚洲自拍偷拍九九九| 精品三级av在线| 成人国产电影网| 亚洲成人www| 久久久久久电影| 欧美性videosxxxxx| 麻豆91精品视频| 中文字幕五月欧美| 欧美美女激情18p| 国产精品69毛片高清亚洲| 日韩美女视频19| 日韩欧美一级片| 色乱码一区二区三区88| 久久se这里有精品| 亚洲免费色视频| 精品国产一区二区三区av性色| 成人黄色大片在线观看| 丝袜美腿亚洲色图| 国产精品水嫩水嫩| 欧美一区二区啪啪| 色综合天天在线| 精品一区二区三区在线播放视频 | 不卡电影一区二区三区| 亚洲午夜视频在线观看| 国产视频在线观看一区二区三区| 91极品视觉盛宴| 精品在线免费观看| 亚洲午夜久久久| 国产精品久久久久久福利一牛影视| 欧美日韩二区三区| av亚洲产国偷v产偷v自拍| 男女激情视频一区| 一区二区成人在线| 国产精品女主播在线观看| 欧美成人午夜电影| 欧美日韩国产综合一区二区| 成人免费黄色在线| 国产专区欧美精品| 日韩在线观看一区二区| 亚洲欧美偷拍卡通变态| 亚洲国产激情av| 欧美精品一区二区三区久久久| 欧美日韩一区久久| 91黄色激情网站| 成人av免费在线| 国产美女精品人人做人人爽| 丝袜诱惑制服诱惑色一区在线观看| 亚洲精品菠萝久久久久久久| 国产三级欧美三级日产三级99| 884aa四虎影成人精品一区| 欧美在线免费观看亚洲| 97超碰欧美中文字幕| 成人av动漫网站| 国产精品自在在线| 极品少妇xxxx精品少妇| 毛片不卡一区二区| 日本欧美大码aⅴ在线播放| 亚洲国产另类av| 亚洲一区二区三区中文字幕| 亚洲裸体在线观看| 亚洲日本丝袜连裤袜办公室| 最好看的中文字幕久久| 综合精品久久久| 亚洲欧美日韩久久精品| 一区二区在线免费观看| 亚洲国产日韩一区二区| 婷婷中文字幕一区三区| 日韩精彩视频在线观看| 午夜精品久久久久久久蜜桃app| 一区二区三区在线免费视频 | 亚洲精品国产无天堂网2021 | 石原莉奈在线亚洲三区| 亚洲一区二三区| 一区二区高清免费观看影视大全 | 亚洲视频综合在线| 成人欧美一区二区三区在线播放| 中文字幕在线一区二区三区| 国产精品伦一区二区三级视频| 中文字幕在线观看不卡| 亚洲人成电影网站色mp4| 亚洲小说春色综合另类电影| 天天综合天天综合色| 精品一区二区在线视频| 国产91精品久久久久久久网曝门 | 18欧美亚洲精品| 亚洲女人小视频在线观看| 亚洲国产精品一区二区久久恐怖片| 婷婷一区二区三区| 国产伦精品一区二区三区免费 | 中文字幕一区在线观看视频| 国产精品乱码人人做人人爱| 国产精品国产自产拍在线| 亚洲电影在线播放| 国精产品一区一区三区mba视频 | 六月丁香婷婷色狠狠久久| 国产剧情一区二区三区| 成年人午夜久久久| 欧美视频一区在线观看| 精品三级在线观看| 成人h动漫精品| 色婷婷亚洲婷婷| 日韩免费高清视频| 自拍偷拍国产精品| 裸体在线国模精品偷拍| 91麻豆国产精品久久| 日韩精品中文字幕在线一区| 国产精品成人午夜| 青青草97国产精品免费观看无弹窗版| 国产一区二区三区av电影| 91色视频在线| 久久久久国产精品人| 亚洲综合成人在线视频| 国产成人午夜精品影院观看视频 | 国产一区二区三区四区五区入口 | 欧美一区二区日韩| 亚洲欧美日韩中文播放 | 国产成人精品免费视频网站| 欧美视频在线观看一区| 国产精品美女久久久久久久久| 蜜臀av在线播放一区二区三区| 99re成人精品视频| 久久人人超碰精品| 天天综合天天综合色| 一本一道久久a久久精品综合蜜臀| 久久奇米777| 免费精品99久久国产综合精品| 99久久国产综合精品色伊| 久久久99精品久久| 男男视频亚洲欧美| 欧美图区在线视频| 亚洲三级久久久| 国产精品一区二区你懂的| 日韩午夜在线观看| 日本不卡高清视频| 欧美日韩的一区二区| 一区二区欧美国产| 91丝袜美女网| 国产精品传媒视频| 99免费精品视频| 成人欧美一区二区三区1314 | 成人精品鲁一区一区二区| 精品久久久久久久一区二区蜜臀| 午夜视黄欧洲亚洲| 欧美日韩一区二区三区四区| 亚洲免费观看高清完整| 91视视频在线观看入口直接观看www | 大白屁股一区二区视频| 日韩美女视频一区二区| 色综合色狠狠综合色| 亚洲一区在线视频| 日韩一卡二卡三卡四卡| 激情综合色丁香一区二区| 国产亚洲视频系列| 成人动漫在线一区| 久久婷婷一区二区三区| 麻豆免费精品视频| 精品国产髙清在线看国产毛片| 日韩激情一二三区| 欧美高清视频一二三区 | 久久久久成人黄色影片| 国产黑丝在线一区二区三区| 久久蜜桃一区二区| 成人综合在线观看| 中文字幕视频一区| 91久久精品一区二区三| 亚洲第一狼人社区| 日韩欧美三级在线| 国产精品18久久久久久vr| 久久久亚洲午夜电影| 国产精品一区二区在线观看网站| 国产偷v国产偷v亚洲高清 | 在线精品视频一区二区| 婷婷激情综合网| 日韩欧美视频在线| 国产成人精品亚洲777人妖 | 美腿丝袜亚洲一区| 26uuu色噜噜精品一区二区| 国产高清亚洲一区| 国产精品久久久久久久岛一牛影视| 日本二三区不卡| 午夜精品福利视频网站| 欧美精品一区二区高清在线观看| 国产成人aaa|