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

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

?? dct.vhd

?? Dct 2d in vhdl + description
?? VHD
?? 第 1 頁 / 共 3 頁
字號:
            add_sub3a <= "0" & (xa5_reg + xa2_reg);    
            add_sub4a <= "0" & (xa4_reg + xa3_reg);    
         ELSE
            IF (toggleA = '0') THEN
               add_sub1a <= "0" & (xa7_reg - xa0_reg);    
               add_sub2a <= "0" & (xa6_reg - xa1_reg);    
               add_sub3a <= "0" & (xa5_reg - xa2_reg);    
               add_sub4a <= "0" & (xa4_reg - xa3_reg);    
            END IF;
         END IF;
      END IF;
   END PROCESS;

--The above if else statement used to get the add_sub signals can also be 
--implemented. The above if else statement used to get the add_sub signals 
-- can also be implemented using the adsu16 library element as follows 
   
   --ADSU8 adsu8_1 (.A(xa0_reg), .B(xa7_reg), .ADD(toggleA), .CI(1'b0), .S(add_sub1a_all), .OFL(add_sub1a_ofl), .CO(open));
   
   --ADSU8 adsu8_2 (.A(xa1_reg), .B(xa6_reg), .ADD(toggleA), .CI(1'b0), .S(add_sub2a_all), .OFL(add_sub1a_ofl), .CO(open));
   
   --ADSU8 adsu8_3 (.A(xa2_reg), .B(xa5_reg), .ADD(toggleA), .CI(1'b0), .S(add_sub3a_all), .OFL(add_sub1a_ofl), .CO(open));
   
   --ADSU8 adsu8_4 (.A(xa3_reg), .B(xa4_reg), .ADD(toggleA), .CI(1'b0), .S(add_sub4a_all), .OFL(add_sub1a_ofl), .CO(open));
   
   -- In addition, Coregen can be used to create adder/subtractor units specific to a particular
   --  In addition, Coregen can be used to create adder/subtractor units specific to a particular
   -- device. The coregen model is then instantiated in the design file. The verilog file from 
   -- coregen can be used along with the design files for simulation and implementation. 
   
   --add_sub adsu8_1 (.A(xa0_reg), .B(xa7_reg), .ADD(toggleA), .CLK(CLK), .Q(add_sub1a));
   
   --add_sub adsu8_2 (.A(xa1_reg), .B(xa6_reg), .ADD(toggleA), .CLK(CLK), .Q(add_sub2a));
   
   --add_sub adsu8_3 (.A(xa2_reg), .B(xa5_reg), .ADD(toggleA), .CLK(CLK), .Q(add_sub3a));
   
   --add_sub adsu8_4 (.A(xa3_reg), .B(xa4_reg), .ADD(toggleA), .CLK(CLK), .Q(add_sub4a));
   
   -- multiply the outputs of the add/sub block with the 8 sets of stored coefficients 
   -- The inputs are shifted thru 8 registers in 8 clk cycles. The ouput of the shift
   --  The inputs are shifted thru 8 registers in 8 clk cycles. The ouput of the shift
   -- registers are registered at the 9th clk. The values are then added or subtracted at the 10th
   -- clk. The first mutiplier output is obtained at the 11th clk. Memoryx[0] shd be accessed
   -- at the 11th clk
   
   --wait state counter 
   PROCESS (RST, CLK)
   BEGIN
      IF (RST = '1') THEN
         i_wait <= "01";    
      ELSIF (CLK'EVENT AND CLK = '1') THEN
         IF (i_wait /= "00") THEN
            i_wait <= i_wait - "01";    
         ELSE
            i_wait <= "00";    
         END IF;
      END IF;
   END PROCESS;

   -- First valid add_sub appears at the 10th clk (8 clks for shifting inputs,
   
   -- 9th clk for registering shifted input and 10th clk for add_sub
   
   -- to synchronize the i value to the add_sub value, i value is incremented
   
   -- only after 10 clks using i_wait
   
   -- sign and magnitude separated here. magnitude of 9 std_logics is stored in *comp 

P_comp1a: process (RST,CLK)
begin
  if (RST = '1') then
       addsub1a_comp <= (others => '0'); save_sign1a <= '0';
   elsif (rising_edge (CLK)) then
      if(add_sub1a(9) = '0') then
        addsub1a_comp <= add_sub1a(7 downto 0); save_sign1a <= '0';
      else
        addsub1a_comp <= (not(add_sub1a(7 downto 0))) + '1'; save_sign1a <= '1';
      end if;
   end if;
end process P_comp1a;

P_comp2a: process (RST,CLK)
begin
  if (RST = '1') then
       addsub2a_comp <= (others => '0'); save_sign2a <= '0';
   elsif (rising_edge (CLK)) then
      if(add_sub2a(9) = '0') then
        addsub2a_comp <= add_sub2a(7 downto 0); save_sign2a <= '0';
      else
        addsub2a_comp <= (not(add_sub2a(7 downto 0))) + '1'; save_sign2a <= '1';
      end if;
   end if;
end process P_comp2a;

P_comp3a: process (RST,CLK)
begin
  if (RST = '1') then
       addsub3a_comp <= (others => '0'); save_sign3a <= '0';
   elsif (rising_edge (CLK)) then
      if(add_sub3a(9) = '0') then
        addsub3a_comp <= add_sub3a(7 downto 0); save_sign3a <= '0';
      else
        addsub3a_comp <= (not(add_sub3a(7 downto 0))) + '1'; save_sign3a <= '1';
      end if;
   end if;
end process P_comp3a;

P_comp4a: process (RST,CLK)
begin
  if (RST = '1') then
       addsub4a_comp <= (others => '0'); save_sign4a <= '0';
   elsif (rising_edge (CLK)) then
      if(add_sub4a(9) = '0') then
        addsub4a_comp <= add_sub4a(7 downto 0); save_sign4a <= '0';
      else
        addsub4a_comp <= (not(add_sub4a(7 downto 0))) + '1'; save_sign4a <= '1';
      end if;
   end if;
end process P_comp4a;

   p1a_all <= (addsub1a_comp * memory1a(6 downto 0));
   p2a_all <= (addsub2a_comp * memory2a(6 downto 0));
   p3a_all <= (addsub3a_comp * memory3a(6 downto 0));
   p4a_all <= (addsub4a_comp * memory4a(6 downto 0));


   -- The following instantiation can be used while targetting Virtex2 
   --MULT18X18 mult1a (.A({9'b0,addsub1a_comp}), .B({11'b0,memory1a[6:0]}), .P(p1a_all));
   
   --MULT18X18 mult2a (.A({9'b0,addsub2a_comp}), .B({11'b0,memory2a[6:0]}), .P(p2a_all));
   
   --MULT18X18 mult3a (.A({9'b0,addsub3a_comp}), .B({11'b0,memory3a[6:0]}), .P(p3a_all));
   
   --MULT18X18 mult4a (.A({9'b0,addsub4a_comp}), .B({11'b0,memory4a[6:0]}), .P(p4a_all));
   
xor1a <= (save_sign1a) xor (memory1a(7));
xor2a <= (save_sign2a) xor (memory2a(7));
xor3a <= (save_sign3a) xor (memory3a(7));
xor4a <= (save_sign4a) xor (memory4a(7));

P_prodA:process(CLK,RST)
begin
    if (RST = '1') then
    p1a <= (others =>'0'); p2a <= (others =>'0'); 
	  p3a <= (others =>'0'); p4a <= (others =>'0'); indexi<= 7;
    elsif (rising_edge (CLK)) then
       if(i_wait = "00") then
          if (xor1a = '1') then p1a <= not("0000" & p1a_all(14 downto 0)) + '1'; 
          elsif (xor1a = '0') then p1a <= ("0000" & p1a_all(14 downto 0)); end if;
          if (xor2a = '1') then p2a <= not("0000" & p2a_all(14 downto 0)) + '1'; 
          elsif (xor2a = '0') then p2a <= ("0000" & p2a_all(14 downto 0)); end if;
          if (xor3a = '1') then p3a <= not("0000" & p3a_all(14 downto 0)) + '1'; 
          elsif (xor3a = '0') then p3a <= ("0000" & p3a_all(14 downto 0)); end if;
          if (xor4a = '1') then p4a <= not("0000" & p4a_all(14 downto 0)) + '1'; 
          elsif (xor4a = '0') then p4a <= ("0000" & p4a_all(14 downto 0)); end if;

         if (indexi = 7) then
          indexi <= 0;
         else
          indexi <= indexi + 1;
         end if;

       end if;
    end if;
end process P_prodA;

   --always @ (posedge RST or posedge CLK)
   -- always @ (posedge RST or posedge CLK)
   --   begin
   --     if (RST)
   --       begin
   --         p1a <= 19'b0; p2a <= 19'b0; p3a <= 19'b0; p4a <= 19'b0; indexi<= 7;
   --       end
   --     else if (i_wait == 2'b00)
   --       begin
   --         p1a <= (save_sign1a ^ memory1a[7]) ? (-addsub1a_comp * memory1a[6:0]) :(addsub1a_comp * memory1a[6:0]);
   --         p2a <= (save_sign2a ^ memory2a[7]) ? (-addsub2a_comp * memory2a[6:0]) :(addsub2a_comp * memory2a[6:0]);
   --         p3a <= (save_sign3a ^ memory3a[7]) ? (-addsub3a_comp * memory3a[6:0]) :(addsub3a_comp * memory3a[6:0]);
   --         p4a <= (save_sign4a ^ memory4a[7]) ? (-addsub4a_comp * memory4a[6:0]) :(addsub4a_comp * memory4a[6:0]);
   --         if (indexi == 7)
   --           indexi <= 0;
   --         else
   --           indexi <= indexi + 1;
   --       end
   --   end
   
   -- Final adder. Adding the ouputs of the 4 multipliers 
   PROCESS (CLK, RST)
   BEGIN
      IF (RST = '1') THEN
         z_out_int1 <= "0000000000000000000";    
         z_out_int2 <= "0000000000000000000";    
         z_out_int <= "0000000000000000000";    
      ELSIF (CLK'EVENT AND CLK = '1') THEN
         z_out_int1 <= p1a + p2a;    
         z_out_int2 <= p3a + p4a;    
         z_out_int <= z_out_int1 + z_out_int2;    
      END IF;
   END PROCESS;

   z_out_rnd <= (z_out_int(18 downto 8) + "00000000001") WHEN z_out_int(7) = '1' ELSE z_out_int(18 downto 8);

   -- 1 sign std_logic, 11 data std_logic 
   z_out <= z_out_rnd ;
---------------------------------------------------------------------------------
   -- 1D-DCT END 
---------------------------------------------------------------------------------

---------------------------------------------------------------------------------
   -- tranpose memory to store intermediate Z coeeficients 
   -- store the 64 coeeficients in the first 64 locations of the RAM 
   -- first valid adder output is at the 15th clk. (input reg + 8 std_logic SR + add_sub + comp. Signal + reg prod 
   --  first valid adder output is at the 15th clk. (input reg + 8 std_logic SR + add_sub + comp. Signal + reg prod 
   -- + 2 partial prod adds) So the RAM is enabled at the 15th clk)
---------------------------------------------------------------------------------
  
   PROCESS (CLK, RST)
   BEGIN
      IF (RST = '1') THEN
         cntr12 <= "0000";    
      ELSIF (CLK'EVENT AND CLK = '1') THEN
         cntr12 <= cntr12 + "0001";    
      END IF;
   END PROCESS;

   en_ram1 <= '0' WHEN RST = '1' ELSE '1' WHEN (cntr12 = "1101") ELSE en_ram1 ;

   PROCESS (CLK, RST)
   BEGIN
      IF (RST = '1') THEN
         en_ram1reg <= '0';    
      ELSIF (CLK'EVENT AND CLK = '1') THEN
         en_ram1reg <= en_ram1;    
      END IF;
   END PROCESS;

   -- After the RAM is enabled, data is written into the RAM1 for 64 clk cycles. Data is written in into
   --  After the RAM is enabled, data is written into the RAM1 for 64 clk cycles. Data is written in into
   -- each consecutive location . After 64 locations are written into, RAM1 goes into read mode and RAM2 goes into
   -- write mode. The cycle then repeats.
   -- For either RAM, data is written into each consecutive location. However , data is read in a different order. If data
   -- is assumed to be written in each row at a time, in an 8x8 matrix, data is read each column at a time. ie., after
   -- the first data is read out, every eight data is read out . Then the 2nd data is read out followed be every 8th.
   -- the write is as follows:
   -- 1w(ram_locn1) 2w(ram_locn2) 3w(ram_locn3) 4w(ram_locn4) 5w(ram_locn5) 6w(ram_locn6) 7w(ram_locn7) 8w(ram_locn8)
   -- 9w(ram_locn9) 10w(ram_locn10) 11w(ram_locn11) 12w(ram_locn12) 13w(ram_locn13) 14w(ram_locn14) 15w(ram_locn15) 16w(ram_locn16)
   -- ..................
   -- 57w(ram_locn57) 58w(ram_locn58) 59w(ram_locn59) 60w(ram_locn60) 61w(ram_locn61) 62w(ram_locn62) 63w(ram_locn63) 64w(ram_locn64)
   -- the read is as follows:
   -- 1r(ram_locn1)  9r(ram_locn2) . . . 57r(ram_locn8)
   -- 2r(ram_locn9) 10r(ram_locn10) . . . 58r(ram_locn16) 
   -- 3r(ram_locn17) 11r(ram_locn18) . . . 59r(ram_locn24)
   -- 4r(ram_locn25) 12r(ram_locn26) . . . 60r(ram_locn32)
   -- 5r(ram_locn33) 13r(ram_locn34) . . . 61r(ram_locn40)
   -- 6r(ram_locn41) 14r(ram_locn42) . . . 62r(ram_locn48)
   -- 7r(ram_locn49) 15r(ram_locn50) . . . 63r(ram_locn56)
   -- 8r(ram_locn57) 16r(ram_locn58) . . . 64r(ram_locn64)
   -- where "xw" is the xth write and "ram_locnx" is the xth ram location and "xr" is the xth read. Reading 
   -- is advanced by the read counter rd_cntr, nd writing by the write counter wr_cntr. 
   
   PROCESS (CLK, RST)
   BEGIN
      IF (RST = '1') THEN
         rd_cntr(5 downto 3) <= "111";    
      ELSIF (CLK'EVENT AND CLK = '1') THEN
         IF (en_ram1reg = '1') THEN
            rd_cntr(5 downto 3) <= rd_cntr(5 downto 3) + "001";    
         END IF;
      END IF;
   END PROCESS;

   PROCESS (CLK, RST)
   BEGIN
      IF (RST = '1') THEN
         rd_cntr(2 downto 0) <= "111";    
      ELSIF (CLK'EVENT AND CLK = '1') THEN
         IF (en_ram1reg = '1' AND rd_cntr(5 downto 3) = "111") THEN
            rd_cntr(2 downto 0) <= rd_cntr(2 downto 0) + "001";    
         END IF;
      END IF;
   END PROCESS;

   PROCESS (CLK, RST)
   BEGIN
      IF (RST = '1') THEN
         rd_cntr(6) <= '1';    
      ELSIF (CLK'EVENT AND CLK = '1') THEN
         IF (en_ram1reg = '1' AND rd_cntr(5 downto 0) = "111111") THEN
            rd_cntr(6) <= NOT rd_cntr(6);    
         END IF;
      END IF;
   END PROCESS;

   PROCESS (CLK, RST)
   BEGIN
      IF (RST = '1') THEN
         wr_cntr <= "1111111";    
      ELSIF (CLK'EVENT AND CLK = '1') THEN
         IF (en_ram1reg = '1') THEN
            wr_cntr <= wr_cntr + "0000001";    
         ELSE
            wr_cntr <= "0000000";    
         END IF;
      END IF;
   END PROCESS;


-- write function
P_ram1: process (RST,CLK)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美四级电影在线观看| 欧美a级一区二区| 成人18精品视频| 国产精品护士白丝一区av| www.色综合.com| 尤物av一区二区| 在线成人高清不卡| 美美哒免费高清在线观看视频一区二区| 91麻豆精品国产91久久久久久久久 | 日韩欧美一卡二卡| 国产一区二区三区四区五区美女| 国产亚洲va综合人人澡精品| jiyouzz国产精品久久| 一二三四社区欧美黄| 91精品欧美久久久久久动漫 | 久久精品国产亚洲5555| 欧美激情一区二区三区不卡| 91蝌蚪porny| 久久精品国产99久久6| 国产精品国产自产拍在线| 欧美在线看片a免费观看| 日本一道高清亚洲日美韩| 国产嫩草影院久久久久| 在线观看日韩毛片| 国产一区欧美日韩| 亚洲主播在线观看| 久久久久久久久久久久久女国产乱| 91丨九色丨尤物| 蜜桃一区二区三区在线| 中文字幕精品在线不卡| 欧美情侣在线播放| 不卡免费追剧大全电视剧网站| 午夜av区久久| 国产精品嫩草久久久久| 91精品综合久久久久久| av爱爱亚洲一区| 日本欧美一区二区三区乱码| 国产精品乱人伦| 欧美电影免费观看高清完整版在线观看| 成人福利视频网站| 美国十次综合导航| 一区二区三区不卡视频| 欧美激情一区二区三区全黄| 欧美一区二区三区免费在线看| 97se亚洲国产综合在线| 精彩视频一区二区三区 | 蜜桃av噜噜一区| 久久疯狂做爰流白浆xx| 国产精品麻豆视频| 精品1区2区在线观看| 欧美午夜一区二区三区免费大片| 国产成人日日夜夜| 久久er精品视频| 秋霞电影一区二区| 亚洲一区二区免费视频| 中文字幕一区二区视频| 久久精品夜夜夜夜久久| 欧美一区二区三区不卡| 欧美少妇一区二区| 91蝌蚪porny| 91无套直看片红桃| 成人精品视频一区| 国产成人亚洲综合a∨婷婷| 青草国产精品久久久久久| 同产精品九九九| 亚洲一区二区精品视频| 亚洲一区在线观看免费| 一区二区在线观看视频在线观看| 国产欧美精品区一区二区三区| www亚洲一区| 精品久久久久久久一区二区蜜臀| 制服丝袜国产精品| 在线播放中文一区| 91精品国模一区二区三区| 欧美日韩电影在线| 欧美精品vⅰdeose4hd| 欧美日韩色综合| 欧洲一区二区av| 欧美视频精品在线观看| 欧美日韩和欧美的一区二区| 欧美日韩国产综合一区二区三区 | 青椒成人免费视频| 麻豆91精品视频| 激情久久五月天| 精品一区二区三区在线播放| 韩国精品久久久| 国产白丝精品91爽爽久久| 国产高清不卡二三区| 国产成人在线看| 99久久免费国产| 欧美视频完全免费看| 在线不卡免费欧美| 久久久综合精品| 中文字幕一区在线| 亚洲一区二区三区四区在线观看| 亚洲国产成人tv| 免费在线欧美视频| 国产盗摄精品一区二区三区在线| aaa国产一区| 欧美性大战久久久久久久| 3d成人动漫网站| 久久亚洲综合色一区二区三区| 国产亚洲欧美日韩在线一区| 亚洲欧洲精品天堂一级| 亚洲超丰满肉感bbw| 久久精品久久久精品美女| 福利一区福利二区| 欧美日韩一区二区三区在线| 日韩一区二区在线播放| 国产日韩欧美电影| 亚洲一区自拍偷拍| 狠狠色丁香九九婷婷综合五月| 欧美激情一区在线| 亚洲综合区在线| 久久99国产精品免费网站| www.欧美精品一二区| 欧洲av在线精品| xnxx国产精品| 玉米视频成人免费看| 紧缚奴在线一区二区三区| 91美女片黄在线观看91美女| 日韩精品一区二区三区老鸭窝| 亚洲视频免费看| 美女国产一区二区三区| 色婷婷亚洲综合| 精品国产免费人成电影在线观看四季| 国产精品欧美久久久久无广告| 亚洲一区二区3| 粉嫩一区二区三区性色av| 5566中文字幕一区二区电影| 亚洲欧美一区二区在线观看| 麻豆精品一区二区| 欧美性感一区二区三区| 国产精品美女久久久久av爽李琼| 奇米影视一区二区三区小说| 91亚洲精品久久久蜜桃| www国产精品av| 婷婷中文字幕综合| 91视频免费播放| 久久久精品2019中文字幕之3| 三级亚洲高清视频| 在线亚洲一区二区| 国产精品久久久久久久久果冻传媒 | 宅男在线国产精品| 亚洲最大成人综合| 99久久er热在这里只有精品66| www国产精品av| 美女视频黄a大片欧美| 欧美日韩另类国产亚洲欧美一级| 国产精品国产三级国产a| 国产成人精品综合在线观看 | 日韩成人dvd| 欧美三级欧美一级| 亚洲免费观看高清| 95精品视频在线| 国产精品妹子av| 成人午夜av在线| 亚洲国产精品v| 国v精品久久久网| 欧美精品一区二区三区在线播放| 奇米四色…亚洲| 日韩欧美国产综合在线一区二区三区| 亚洲电影第三页| 4438亚洲最大| 美国十次综合导航| 精品成a人在线观看| 蜜桃av噜噜一区二区三区小说| 日韩欧美一区中文| 麻豆成人久久精品二区三区小说| 日韩三级视频中文字幕| 免费观看成人鲁鲁鲁鲁鲁视频| 日韩一区二区三区视频| 免费观看日韩电影| 精品盗摄一区二区三区| 国产精品一线二线三线| 欧美高清一级片在线观看| 成人午夜视频在线| 最好看的中文字幕久久| 色呦呦国产精品| 亚洲高清免费视频| 91精品国产全国免费观看| 蜜臀av国产精品久久久久| 久久综合久色欧美综合狠狠| 国产成人午夜精品影院观看视频| 国产精品每日更新| 在线视频一区二区三| 水蜜桃久久夜色精品一区的特点| 日韩欧美在线一区二区三区| 国产成人av资源| 亚洲欧美日韩系列| 欧美日韩精品一区二区天天拍小说 | 国产在线视频精品一区| 国产精品福利电影一区二区三区四区 | 777色狠狠一区二区三区| 久久99精品国产.久久久久久| 国产欧美日韩卡一| 色噜噜狠狠成人网p站| 日本成人在线电影网| 国产色产综合色产在线视频| 99re在线精品|