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

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

?? ddr_sdr.vhd

?? ddr verilog代碼,實現DDR內存控制
?? VHD
?? 第 1 頁 / 共 3 頁
字號:
                        tras_cnt_q <= TRAS-1;
                        state_q   <= ST_RFSH_4;
                     else
                        state_q   <= ST_RFSH_3;
                     end if;
                  end if;
                  
               when ST_RFSH_3 =>
                  if ct_cnt_q=1 then
                     state_q    <= ST_WAIT_CMD;
                  end if;
                  
               when ST_RFSH_4 =>
                  if tras_cnt_q = 0 then
                     state_q <= ST_WAIT_CMD;
                  else
                     tras_cnt_q <= tras_cnt_q -1;
                  end if;
               
               when RD_PRECH => 
                  sdr_if_q    <= COMMAND(PRECHARGE);
                  ld_ct_cnt_q <= true;
                  state_q     <= ST_RD_ACTIVATE;
                  a_int_q(auto_precharge) <= '1';  -- precharge all

               when ST_READ1 =>
                  state_q <= ST_WAIT_CMD;
                 
               when ST_RD_ACTIVATE =>
                  if ct_cnt_q=1 then
                     ld_ct_cnt_q <= true;
                     sdr_if_q <= COMMAND(ACTIVE);
                     a_int_q  <= row_adr_q;  -- ROW address
                     state_q <= ST_WAIT_RD;                                             
                  end if;
                  
               when ST_WAIT_RD =>
                  if ct_cnt_q=1 then
                     start_rd := true;
                     a_int_q       <= col_adr_q;  -- Col Address
                     sdr_if_q      <= COMMAND(BURST_RD); -- set burst read command
                     state_q <= ST_READ1;
                  end if;
            end case;
            
            sdr_if2_q  <= sdr_if_q;
            ba_int2_q  <= ba_int_q;
            a_int2_q   <= a_int_q;
            cke_int2_q <= cke_int_q;
            
            -- Write Control Signals
            if start_wr then 
               wr_ena_q    <= '1';
            else
               wr_ena_q    <= '0';
            end if;
            
            wr_ena2_q    <= wr_ena_q;
            wr_ena3_q    <= wr_ena2_q;
            
            -- Data Input Shiftreg 
            if wr_ena2_q='1' then
               shift_q(0) <= data_in; -- 2 clocks delayed MUX signal
            end if;
            
            -- Read Control Signals
            if start_rd then
               rd_ena_q <= true;
               bus_switch_q(0) <= '1';
            else
               rd_ena_q <= false;
               bus_switch_q(0) <= '0';
            end if;
            -- On and off-switching for Tristate buffer 
            -- is controlled by bus_switch_q
            bus_switch_q(bus_switch_q'LEFT downto 1) <= bus_switch_q(bus_switch_q'LEFT-1 downto 0);
            z_q  <= bus_switch_q(bus_switch_q'LEFT) or bus_switch_q(bus_switch_q'LEFT-1); 
            ----------------------------------------------------
            
            -- cycle time counter
            if ld_ct_cnt_q then
               ct_cnt_q <= sdr_if_q.ct;
            elsif ct_cnt_q > 0 then
               ct_cnt_q <= ct_cnt_q -1;
            end if;

            ct0_q <= ct_cnt_q=1;
            
            -- delay time counter
            if ld_del_cnt_q then
               del_cnt_q <= 3;
            elsif del_cnt_q > 0 then
               del_cnt_q <= del_cnt_q -1;
            end if;
            del0_q <= del_cnt_q=1;
            
            -- Wait time shift register for Read2Write and Write2Read delay
            -- Note that there is 1 more clock needed for a change from WRITE to READ
            -- due to pipeline delay, compared to READ to WRITE
            if start_rd or start_wr then 
               w_srg_q <= "000111";
            else
               w_srg_q <= '0' & w_srg_q(w_srg_q'LEFT downto 1);
            end if;

         end if;
      end process;

      process(sys_clk, rst_int_n)
      begin
         if rst_int_n='0' then
            shift_q(1) <= (others=>'0');
         elsif falling_edge(sys_clk) then
            shift_q(1) <= shift_q(0);
         end if;
      end process;
      
      -- Create iob FFs without reset
      process (sys_clk) is
      begin
         if rising_edge(sys_clk) then  
            for n in 0 to DDR_DQS_WIDTH-1 loop
               if wr_ena2_q='1' or wr_ena3_q='1' then -- ML: verlaengert + noch 1 clock
                  dqsz_q(n) <= '0';
               else
                  dqsz_q(n) <= '1';
               end if;
            end loop;  
         end if;
      end process;

      process (sys_clk270)
      begin  
         if rising_edge(sys_clk270) then  
            for n in 0 to DDR_DATA_WIDTH-1 loop
               tristate_q(n) <= z_q='1';
            end loop;
         end if;
      end process ;

      ------------------------------------------------------------------------------------------------------------------------------------------------
      -- ctrl signals on negative edge, all FFs without Async Reset
      ------------------------------------------------------------------------------------------------------------------------------------------------
      process (sys_clk) is
      begin  
         if falling_edge(sys_clk) then
            case mux_q is
               when NORMAL => -- Read Command
                  ras_qn       <= sdr_if_q.ras_n;
                  cas_qn       <= sdr_if_q.cas_n; 
                  we_qn        <= sdr_if_q.we_n; 
                  cs_qn        <= sdr_if_q.cs_n; 
                  ba_q         <= ba_int_q; 
                  a_q          <= a_int_q;
                  cke_q        <= cke_int_q;
               when DELAYED => -- Write Command
                  ras_qn       <= sdr_if2_q.ras_n;
                  cas_qn       <= sdr_if2_q.cas_n; 
                  we_qn        <= sdr_if2_q.we_n; 
                  cs_qn        <= sdr_if2_q.cs_n; 
                  ba_q         <= ba_int2_q; 
                  a_q          <= a_int2_q;
                  cke_q        <= cke_int2_q;
            end case;
         end if;
      end process;

      -- Data MSBs, e.g. (31 downto 16)  
      ddr_data(U_DATA_WIDTH-1 downto U_DATA_WIDTH/2) <= shift_q(0)(U_DATA_WIDTH/2-1 downto 0);
      -- Data LSBs, e.g. (15 downto 0)  
      ddr_data(U_DATA_WIDTH/2-1 downto 0)            <= shift_q(1)(U_DATA_WIDTH-1 downto U_DATA_WIDTH/2);
      
      ------------------------------------------------------------------------------------------------------------------------------------------------
      -- DDR-FFs and Tristate Buffers
      ------------------------------------------------------------------------------------------------------------------------------------------------
      -- SDRAM Clock
      fddr1 : entity work.my_fddr
         port map( d0 => '0',
                   d1 => '1',
                   ce => '1',
                   c1 => clk_int,
                   r  => '0',
                   s  => '0',
                   q  => sdr_clk
                   );
                   
      fddr2 : entity work.my_fddr
         port map( d0 => '1',
                   d1 => '0',
                   ce => '1',
                   c1 => clk_int,
                   r  => '0',
                   s  => '0',
                   q  => sdr_clk_n
                   );
      -- Data OUT FFs
      gen_d1: for n in 0 to DDR_DATA_WIDTH-1 generate
      begin 
         fddr3 : entity work.my_fddr
            port map( d0 => ddr_data(n),
                      d1 => ddr_data(n + DDR_DATA_WIDTH),
                      ce => '1',
                      c1 => sys_clk270,
                      r  => '0',
                      s  => '0',
                      q  => d2sdr(n));
      end generate gen_d1;
      
      -- DQS OUT FFs
      gen_d2: for n in 0 to DDR_DQS_WIDTH-1 generate
      begin 
         fddr4 : entity work.my_fddr
            port map( d0 => '0',
                      d1 => '1',
                      ce => '1',
                      c1 => sys_clk,
                      r  => wr_ena3_qn,
                      s  => '0',
                      q  => dqs(n));
      end generate gen_d2;
      
      -- Usage of DM signals not supported in this version
      dm_q <= (others=>'0');
      
      gen3: for n in 0 to DDR_DATA_WIDTH-1 generate
         data(n) <= 'Z' when tristate_q(n) else d2sdr(n);
      end generate;

      wr_ena3_qn <= not wr_ena3_q;
      
      -- Tristate-Buffer fuer dqs_q      
      gen_dqs : for n in 0 to DDR_DQS_WIDTH-1 generate
         dqs_q(n) <= 'Z' when dqsz_q(n)='1' else dqs(n);
      end generate gen_dqs;

      ------------------------------------------------------------------------------------------------------------------------------------------------
      -- READ DATA Processing
      ------------------------------------------------------------------------------------------------------------------------------------------------
      process (sys_clk)
      begin  
         if rising_edge(sys_clk) then
         
            -- sample HI-data word with rising edge
            data_hi_q <= data;
            
            -- store HI- und LO- data word  in 32bit output register
            data_out_q <= data_hi_q & data_lo2_q;
            
         end if;
      end process;
      
      process(sys_clk)
      begin
         if rising_edge(sys_clk) then
            -- derive window for valid data from rd_ena_q
            rd_ena_del_q <= rd_ena_del_q(rd_ena_del_q'LEFT-1 downto 0) & rd_ena_q;
            
         end if;
      end process;

      data_vld_q <= '1' when rd_ena_del_q(rd_ena_del_q'LEFT) else '0';
      
      process (sys_clk)
      begin  
         if falling_edge(sys_clk) then
         
            -- sample LO- word with falling edge
            data_lo1_q <= data;
            
            -- 1 clock additional delay to store HI- and LO-word
            -- with the next rising edge as 32bit word
            data_lo2_q <= data_lo1_q;
         end if;
      end process;

      -----------------------------------------------      
      -- Write Data Processing
      -----------------------------------------------      
      data_req_q <= '1' when wr_ena_q='1' else '0';
         
      ------------------------------------------------------------------------------
      -- wait counter for first 200 us
      ------------------------------------------------------------------------------
      init_cnt: block
         signal init_cnt_q : unsigned (0 to 13); 
      begin
         process (sys_clk, rst_int_n) is
         begin 
            if rst_int_n = '0' then  
               init_cnt_q <= (others => '0');
               init_cnt0_q <= false;
               init_cnt1_q <= false;
            elsif rising_edge(sys_clk) then
               
               init_cnt0_q <= init_cnt_q=1;
               init_cnt1_q <= init_cnt_q=2;
               
               if ld_init_cnt_q then
                  init_cnt_q <= conv_unsigned(get_init_max -1, init_cnt_q'length);
                  init_cnt0_q <= false;  
                  init_cnt1_q <= false;  
               elsif init_cnt_q /= 0 then
                  init_cnt_q <= init_cnt_q -1;
               end if;
               
            end if;
         end process;
      end block init_cnt;

      ------------------------------------------------------------------------------------------------------------------------------------------------
      -- wait counter for 200 clk cycles for dll
      ------------------------------------------------------------------------------------------------------------------------------------------------
      dll_cnt: block
         constant DLL_DELAY : integer := 200 -1;
         signal dll_cnt_q : integer range 0 to DLL_DELAY;
      begin
         process (sys_clk, rst_int_n) is
         begin 
            if rst_int_n='0' then
               dll_cnt0_q <= false;
               dll_cnt_q  <= DLL_DELAY;
            elsif rising_edge(sys_clk) then  
               if ld_dll_cnt_q then
                  dll_cnt_q  <= DLL_DELAY;
               elsif dll_cnt_q > 0 then
                  dll_cnt_q <= dll_cnt_q -1;
               end if;
               dll_cnt0_q <= dll_cnt_q = 1;
               
            end if;
         end process;
      end block dll_cnt;
   end block ctrl;

end architecture behave;


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品亚洲午夜一区二区三区 | jizz一区二区| 久久久久久久久久美女| 国产成人在线观看| 国产精品视频yy9299一区| 成人看片黄a免费看在线| 最新国产成人在线观看| 在线观看一区不卡| 三级在线观看一区二区| 日韩色视频在线观看| 狠狠色综合播放一区二区| 日本一区二区三区久久久久久久久不 | 日本欧美久久久久免费播放网| 8x福利精品第一导航| 国产精品综合在线视频| 国产精品久久久久久亚洲毛片 | www国产精品av| youjizz久久| 婷婷久久综合九色国产成人 | 精品一二三四区| 中文字幕一区二区5566日韩| 在线观看91视频| 九九九精品视频| 亚洲精选视频在线| 欧美mv日韩mv亚洲| www.亚洲激情.com| 日产欧产美韩系列久久99| 国产日韩欧美综合在线| 日本韩国欧美三级| 激情成人综合网| 亚洲综合在线第一页| 日韩精品中午字幕| 精品在线观看视频| 欧美亚洲图片小说| 久久爱www久久做| 亚洲色欲色欲www| 欧美成人女星排名| 国产欧美一区视频| 欧美视频中文一区二区三区在线观看| 老司机免费视频一区二区| 国产精品成人在线观看| 91精品久久久久久久久99蜜臂| 成人一区二区三区视频| 日本一区中文字幕| 亚洲最新视频在线观看| 国产偷v国产偷v亚洲高清| 欧美一级夜夜爽| 色婷婷av一区| 国产成人亚洲综合a∨婷婷| 天天色 色综合| 亚洲欧美日韩一区| 国产精品久久久久久久久晋中| 日韩欧美国产不卡| 欧美精品日韩一本| 91亚洲精品久久久蜜桃网站| 国产成人aaa| 国产综合色产在线精品| 日韩精品乱码av一区二区| 亚洲码国产岛国毛片在线| 国产精品天天看| 日本一区二区久久| 久久嫩草精品久久久精品一| 日韩三级高清在线| 欧美日韩成人综合在线一区二区| 91首页免费视频| 91在线精品秘密一区二区| 北条麻妃国产九九精品视频| 国产黄色91视频| 国产一区不卡视频| 国产精华液一区二区三区| 国产精品一区二区久激情瑜伽| 蜜臀91精品一区二区三区| 日韩精品一二三四| 日韩精品午夜视频| 日韩精品乱码av一区二区| 日韩制服丝袜av| 蜜臀av一级做a爰片久久| 日韩高清不卡一区| 免费精品视频在线| 欧美美女bb生活片| 欧美日韩午夜在线视频| 91成人在线观看喷潮| 欧洲精品一区二区| 欧美挠脚心视频网站| 91超碰这里只有精品国产| 91精品欧美综合在线观看最新| 欧美日韩一级片在线观看| 欧美精品日韩精品| 精品999在线播放| 欧美精品一区二区在线观看| 精品久久久久久久久久久久久久久 | 亚洲在线观看免费| 天天av天天翘天天综合网 | 91免费视频网址| 日本韩国精品在线| 91精品国产欧美一区二区| 日韩欧美一区二区在线视频| 精品动漫一区二区三区在线观看| 国产女人aaa级久久久级| 亚洲精品视频在线观看免费| 亚洲国产精品久久艾草纯爱| 日本伊人色综合网| 国产盗摄精品一区二区三区在线| 成人精品高清在线| 日本乱人伦aⅴ精品| 7777精品伊人久久久大香线蕉 | 午夜精品久久久久久久久久久| 日本不卡在线视频| 国产成人在线视频免费播放| 色狠狠色狠狠综合| 日韩精品专区在线| 亚洲色图制服丝袜| 奇米色一区二区三区四区| 国产一区欧美二区| 色天天综合色天天久久| 日韩一区二区三区免费观看| 亚洲国产精品精华液ab| 性久久久久久久久| 国产电影一区二区三区| 欧美最猛黑人xxxxx猛交| 2020国产精品久久精品美国| 亚洲精品视频在线观看网站| 韩国成人精品a∨在线观看| 91免费视频观看| 国产日韩欧美在线一区| 天堂蜜桃一区二区三区| av亚洲精华国产精华精华| 精品精品国产高清a毛片牛牛| 综合激情成人伊人| 国产一区二区看久久| 欧美日韩精品欧美日韩精品一综合 | 国产不卡在线视频| 欧美一区二区视频在线观看| 国产精品久久毛片av大全日韩| 日韩—二三区免费观看av| 色八戒一区二区三区| 国产日韩影视精品| 寂寞少妇一区二区三区| 欧美三级电影网| 中文字幕综合网| 国产成人在线视频网址| 精品国产一区a| 日韩高清在线一区| 欧美日韩另类一区| 亚洲色图欧洲色图| 国产成人av电影在线| 欧美精品一区二区三区四区| 日韩电影在线免费看| 欧美系列日韩一区| 亚洲激情自拍偷拍| av一二三不卡影片| 中文字幕电影一区| 国产盗摄一区二区| 欧美国产精品一区| 国产a视频精品免费观看| 久久一区二区视频| 精品一区二区三区在线播放视频 | 欧美mv日韩mv亚洲| 久久精品免费观看| 日韩午夜精品视频| 日本女人一区二区三区| 91精品国产高清一区二区三区| 五月天欧美精品| 欧美精品在线观看播放| 午夜电影网一区| 91麻豆精品91久久久久同性| 天天影视涩香欲综合网 | 韩国av一区二区三区四区| 日韩免费看的电影| 麻豆91在线播放| 精品1区2区在线观看| 国模娜娜一区二区三区| 久久精品一区四区| 成人免费毛片aaaaa**| 国产精品久久久久久妇女6080| av激情成人网| 亚洲愉拍自拍另类高清精品| 欧美嫩在线观看| 国产综合色视频| 中文字幕一区二区三区四区不卡| 成人精品电影在线观看| 久久美女高清视频| 午夜精品福利视频网站| 亚洲国产成人高清精品| 7777精品久久久大香线蕉| 久久爱www久久做| 9191国产精品| 婷婷开心久久网| 欧美日韩国产成人在线免费| 亚洲精品福利视频网站| a在线欧美一区| 亚洲天堂中文字幕| 99精品一区二区三区| 国产精品网站导航| 成人精品免费网站| 欧美国产一区视频在线观看| 国产成人日日夜夜| 欧美激情一区二区三区蜜桃视频 | 午夜av区久久| 欧美午夜片在线看|