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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dct.vhd

?? Dct 2d in vhdl + description
?? VHD
?? 第 1 頁 / 共 3 頁
字號(hào):

-----------------------------------------------------------------------------

-- Modul: dct8x8 : 

-- A 1D-DCT is implemented on the input pixels first. The output of this
-- called  the intermediate value is stored in a RAM. The 2nd 1D-DCT operation 
-- is done on this stored value to give the final 2D-DCT ouput dct_2d. The 
-- inputs are 8 std_logics wide and the 2d-dct ouputs are 9 std_logics wide.

-- 1st 1D section

-- The input signals are taken one pixel at a time in the order x00 to x07,
-- x10 to x07 and so on upto x77. These inputs are fed into a 8 std_logic shift
-- register. The outputs of the 8 std_logic shift registers are registered by the 
-- div8clk which is the CLK signal divided by 8. This will enable us to 
-- register in 8 pixels (one row) at a time. The pixels are paired up in an 
-- adder subtractor in the order xk0,xk7:xk1,xk6:xk2,xk5:xk3,xk4. The adder 
-- subtractor is tied to CLK. For every clk,  

-- the adder/subtractor module 

-- alternaltley chooses addtion and subtraction. This selection is done by
-- the toggle flop. The ouput of the addsub is fed into a muliplier whose 
-- other input is connected to stored values in registers which act as 
-- memory. The ouput of the 4 mulipliers are added at every CLK in the 
-- final adder. The ouput of the  adder z_out is the 1D-DCT values given 
-- out in the order in which the inputs were read in.
-- It takes 8 clks to read in the first set of inputs, 1 clk to register 
-- inputs,1 clk to do add/sub, 1clk to get absolute value,
-- 1 clk for multiplication, 2 clk for the final adder. total = 14 clks to get 
-- the 1st z_out value. Every subsequent clk gives out the next z_out value.
-- So to get all the 64 values we need  11+63=74 clks.

-- Storage / RAM section

-- The ouputs z_out of the adder are stored in RAMs. Two RAMs are used so 
-- that data write can be continuous. The 1st valid input for the RAM1 is 
-- available at the 15th clk. So the RAM1 enable is active after 15 clks. 
-- After this the write operation continues for 64 clks . At the 65th clock, 
-- since z_out is continuous, we get the next valid z_out_00. This 2nd set of
-- valid 1D-DCT coefficients are written into RAM2 which is enabled at 15+64 
-- clks. So at 65th clk, RAM1 goes into read mode for the next 64 clks and 
-- RAM2 is in write mode. After this for every 64 clks, the read and write 
-- switches between the 2 RAMS.

-- 2nd 1D-DCT section

-- After the 1st 79th clk when RAM1 is full, the 2nd 1d calculations can 
-- start. The second 1D implementation is the same as the 1st 1D 
-- implementation with the inputs now coming from either RAM1 or RAM2. Also,
-- the inputs are read in one column at a time in the order z00 to z70, z10 to 
-- z70 upto z77. The oupts from the adder in the 2nd section are the 2D-DCT 
-- coeeficients.


library IEEE; 
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
use IEEE.numeric_std.all;

library unisims_ver; -- include this for modelsim simulation
                     -- when using mult18x18


ENTITY dct IS
   PORT (
      CLK                     : IN std_logic;   					-- zegar
      RST                     : IN std_logic;   					-- reset
      xin                     : IN std_logic_vector(7 downto 0);   	-- dane wejsciowe 8 bit      
      dct_2d                  : OUT std_logic_vector(11 downto 0);  -- dane wyjsciowe 12 bit
      rdy_out                 : OUT std_logic);   					-- ready out
END dct;

ARCHITECTURE logic OF dct IS


-- The max value of a pixel after processing (to make their expected mean to 
-- zero). The max value of a pixel after processing (to make their expected 
-- mean to zero) is 127. If all the values in a row are 127, the max value of 
-- the product terms would be (127*8)*(23170/256) and that of z_out_int would 
-- be (127*8)*23170/65536. This value divided by 2raised to 16 is 
-- equivalent to ignoring the 16 lsb std_logics of the value 

---------------------------------------------------------------------------------
   -- 1D section 
---------------------------------------------------------------------------------

signal xa0_in, xa1_in, xa2_in, xa3_in, 
       xa4_in, xa5_in, xa6_in, xa7_in:           std_logic_vector(7 downto 0);
signal xa0_reg, xa1_reg, xa2_reg, xa3_reg, 
       xa4_reg, xa5_reg, xa6_reg, xa7_reg :      std_logic_vector (8 downto 0);
signal addsub1a_comp,addsub2a_comp,
       addsub3a_comp,addsub4a_comp :             std_logic_vector (7 downto 0);
signal add_sub1a,add_sub2a,add_sub3a,add_sub4a : std_logic_vector (9 downto 0);
signal save_sign1a,save_sign2a,
       save_sign3a,save_sign4a :                 std_logic;
signal xor1a,xor2a,xor3a,xor4a : 				 std_logic;
signal p1a,p2a,p3a,p4a :                         std_logic_vector (18 downto 0);
signal p1a_all,p2a_all,p3a_all,p4a_all :         std_logic_vector (14 downto 0);   

signal i_wait                   :  std_logic_vector(1 downto 0);   
signal toggleA                  :  std_logic;   
signal z_out_int1               :  std_logic_vector(18 downto 0);   
signal z_out_int2               :  std_logic_vector(18 downto 0);   
signal z_out_int                :  std_logic_vector(18 downto 0);   
signal z_out_rnd                :  std_logic_vector(10 downto 0);   
signal z_out                    :  std_logic_vector(10 downto 0);   
signal indexi                   :  integer;   

---------------------------------------------------------------------------------
   -- clks and counters 
---------------------------------------------------------------------------------

signal cntr12                   :  std_logic_vector(3 downto 0);   
signal cntr8                    :  std_logic_vector(3 downto 0);   
signal cntr79                   :  std_logic_vector(6 downto 0);   
signal wr_cntr                  :  std_logic_vector(6 downto 0);   
signal rd_cntr                  :  std_logic_vector(6 downto 0);   
signal cntr92                   :  std_logic_vector(6 downto 0); 
 
---------------------------------------------------------------------------------
   -- memory section 
---------------------------------------------------------------------------------

signal  memory1a, memory2a, 
		memory3a, memory4a		:  std_logic_vector(7 downto 0);
signal data_out                 :  std_logic_vector(10 downto 0);   
signal en_ram1                  :  std_logic;   
signal en_dct2d                 :  std_logic;   
signal en_ram1reg               :  std_logic;   
signal en_dct2d_reg             :  std_logic;   

   
type ram1a_mem is array (0 to 63) of std_logic_vector(10 downto 0);
signal ram1_mem                 :  ram1a_mem;

   --  add the following to infer block RAM in synlpicity
   --    synthesis syn_ramstyle = "block_ram"  //shd be within /*..*/

   
type ram2a_mem is array (0 to 63) of std_logic_vector(10 downto 0);
signal ram2_mem                 :  ram2a_mem;

   --  add the following to infer block RAM in synlpicity
   --    synthesis syn_ramstyle = "block_ram"  //shd be within /*..*/

---------------------------------------------------------------------------------
   -- 2D section 
---------------------------------------------------------------------------------


signal data_out_final:  							std_logic_vector(10 downto 0);   
signal xb0_in, xb1_in, xb2_in, xb3_in, 
       xb4_in, xb5_in, xb6_in, xb7_in :     		std_logic_vector(10 downto 0);
signal xb0_reg, xb1_reg, xb2_reg, xb3_reg, 
       xb4_reg, xb5_reg, xb6_reg, xb7_reg :   		std_logic_vector(11 downto 0);
signal add_sub1b,add_sub2b,add_sub3b,add_sub4b: 	std_logic_vector(11 downto 0);
signal addsub1b_comp,addsub2b_comp,
       addsub3b_comp,addsub4b_comp :          		std_logic_vector (10 downto 0);
signal save_sign1b,save_sign2b,
	   save_sign3b,save_sign4b : 					std_logic;
signal xor1b,xor2b,xor3b,xor4b: 					std_logic;
signal p1b,p2b,p3b,p4b: 							std_logic_vector(19 downto 0);
signal p1b_all,p2b_all,p3b_all,p4b_all : 			std_logic_vector (17 downto 0);
                     
signal toggleB                  :  std_logic;   
signal dct2d_int1               :  std_logic_vector(19 downto 0);   
signal dct2d_int2               :  std_logic_vector(19 downto 0);   
signal dct_2d_int               :  std_logic_vector(19 downto 0);   
signal dct_2d_rnd               :  std_logic_vector(11 downto 0);   
   -- rounding of the value

BEGIN
---------------------------------------------------------------------------------
   --  1D-DCT BEGIN 
---------------------------------------------------------------------------------

   --  1D-DCT zgromadzenie stalych wartosci wspolczynnikow
   
   PROCESS (RST, CLK)
   BEGIN
      IF (RST = '1') THEN					    -- przypisanie zerowej wartosci poczatkowej
         memory1a <= "00000000";    
         memory2a <= "00000000";    
         memory3a <= "00000000";    
         memory4a <= "00000000";    
      ELSIF (CLK'EVENT AND CLK = '1') THEN 	    -- przypisanie odpowiedniej wartosci dla kazdego wspolczynnika
         CASE indexi IS						    -- np. 8'd127 jest dziesietna liczba 127 wyrazona na szerokosc 8 bitow
            WHEN 0 =>
                     memory1a <= "01011011";    -- 8'd91
                     memory2a <= "01011011";    -- 8'd91
                     memory3a <= "01011011";    -- 8'd91
                     memory4a <= "01011011";    -- 8'd91
            WHEN 1 =>
                     memory1a <= "01111110";    -- 8'd126
                     memory2a <= "01101010";    -- 8'd106
                     memory3a <= "01000111";    -- 8'd71
                     memory4a <= "00011001";    -- 8'd25
            WHEN 2 =>
                     memory1a <= "01110110";    -- 8'd118
                     memory2a <= "00110001";    -- 8'd49
                     memory3a <= "10110001";    -- 7'd49         -8'd49 
                     memory4a <= "11110110";    -- 7'd118        -8'd118
            WHEN 3 =>
                     memory1a <= "01101010";    -- 8'd106
                     memory2a <= "10011001";    -- 7'd25         -8'd25  
                     memory3a <= "11111110";    -- 7'd126        -8'd126 
                     memory4a <= "11000111";    -- 7'd71  
            WHEN 4 =>
                     memory1a <= "01011011";    -- 8'd91
                     memory2a <= "11011011";    -- 7'd91         -8'd91 
                     memory3a <= "11011011";    -- 7'd91         -8'd91  
                     memory4a <= "01011011";    -- 8'd91
            WHEN 5 =>
                     memory1a <= "01000111";    -- 8'd71
                     memory2a <= "11111110";    -- 7'd126        -8'd126
                     memory3a <= "00011001";    -- 8'd25
                     memory4a <= "01101010";    -- 8'd106
            WHEN 6 =>
                     memory1a <= "00110001";    -- 8'd49
                     memory2a <= "11110110";    -- 7'd118        -8'd118 
                     memory3a <= "01110110";    -- 8'd118
                     memory4a <= "10110001";    -- 7'd49         -8'd49
            WHEN 7 =>
                     memory1a <= "00011001";    -- 8'd25
                     memory2a <= "11000111";    -- 7'd71         -8'd71 
                     memory3a <= "01101010";    -- 8'd106
                     memory4a <= "11111110";    -- 7'd126 		 -8'd126
            WHEN OTHERS =>
                     NULL;
           
            
         END CASE;
      END IF;
   END PROCESS;


   -- 8-std_logic input shifted 8 times thru a shift register
   PROCESS (CLK, RST)
   BEGIN
      IF (RST = '1') THEN
         xa0_in <= "00000000";    xa1_in <= "00000000";    
         xa2_in <= "00000000";    xa3_in <= "00000000";    
         xa4_in <= "00000000";    xa5_in <= "00000000";    
         xa6_in <= "00000000";    xa7_in <= "00000000";    
      ELSIF (CLK'EVENT AND CLK = '1') THEN
         xa0_in <= xin;       xa1_in <= xa0_in;    
         xa2_in <= xa1_in;    xa3_in <= xa2_in;    
         xa4_in <= xa3_in;    xa5_in <= xa4_in;    
         xa6_in <= xa5_in;    xa7_in <= xa6_in;    
      END IF;
   END PROCESS;


   -- shifted inputs registered every 8th clk (using cntr8)
   PROCESS (CLK, RST)
   BEGIN
      IF (RST = '1') THEN
         cntr8 <= "0000";    
      ELSIF (CLK'EVENT AND CLK = '1') THEN
         IF (cntr8 < "1000") THEN
            cntr8 <= cntr8 + "0001";    
         ELSE
            cntr8 <= "0001";    
         END IF;
      END IF;
   END PROCESS;

   PROCESS (CLK, RST)
   BEGIN
      IF (RST = '1') THEN
         xa0_reg <= "000000000";    xa1_reg <= "000000000";    
         xa2_reg <= "000000000";    xa3_reg <= "000000000";    
         xa4_reg <= "000000000";    xa5_reg <= "000000000";    
         xa6_reg <= "000000000";    xa7_reg <= "000000000";    
      ELSIF (CLK'EVENT AND CLK = '1') THEN
         IF (cntr8 = "1000") THEN
            xa0_reg <= xa0_in(7) & xa0_in;    xa1_reg <= xa1_in(7) & xa1_in;    
            xa2_reg <= xa2_in(7) & xa2_in;    xa3_reg <= xa3_in(7) & xa3_in;    
            xa4_reg <= xa4_in(7) & xa4_in;    xa5_reg <= xa5_in(7) & xa5_in;    
            xa6_reg <= xa6_in(7) & xa6_in;    xa7_reg <= xa7_in(7) & xa7_in;    
         ELSE
            
         END IF;
      END IF;
   END PROCESS;

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

   -- adder / subtractor block 
   PROCESS (CLK, RST)
   BEGIN
      IF (RST = '1') THEN
         add_sub1a <= "0000000000";    
         add_sub2a <= "0000000000";    
         add_sub3a <= "0000000000";    
         add_sub4a <= "0000000000";    
      ELSIF (CLK'EVENT AND CLK = '1') THEN
         IF (toggleA = '1') THEN
            add_sub1a <= "0" & (xa7_reg + xa0_reg);    
            add_sub2a <= "0" & (xa6_reg + xa1_reg);    

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本护士毛茸茸| 欧美亚洲精品一区| 日本午夜精品一区二区三区电影 | 波多野洁衣一区| 国模娜娜一区二区三区| 老司机免费视频一区二区三区| 亚洲午夜精品在线| 一区二区三区免费网站| 亚洲一区二区三区不卡国产欧美| 亚洲视频在线观看三级| 亚洲女同女同女同女同女同69| 久久久91精品国产一区二区三区| 精品国产乱码久久久久久闺蜜| 日韩一区二区三区电影| 日韩欧美aaaaaa| 久久精品男人的天堂| 国产精品第13页| 亚洲另类色综合网站| 亚洲精品视频一区二区| 依依成人精品视频| 亚洲h在线观看| 麻豆精品在线观看| 国产精品18久久久久久vr| 成人午夜在线播放| 日本精品一区二区三区四区的功能| 在线观看网站黄不卡| 欧美高清视频不卡网| 精品国产91亚洲一区二区三区婷婷| 久久综合九色综合97_久久久| 国产欧美精品一区| 亚洲一二三四在线| 麻豆精品视频在线观看免费| 国产精品自产自拍| 欧美中文字幕久久| 精品国产乱码久久久久久影片| 国产欧美日韩精品一区| 亚洲精品国产品国语在线app| 亚洲制服丝袜在线| 国产成人免费在线| 欧美午夜精品久久久久久超碰| 欧美一区二区免费视频| 国产精品每日更新| 美女视频黄 久久| av成人老司机| 欧美大白屁股肥臀xxxxxx| 国产精品嫩草久久久久| 精一区二区三区| 91成人看片片| 欧美极品少妇xxxxⅹ高跟鞋| 午夜伊人狠狠久久| 国产成+人+日韩+欧美+亚洲| 6080午夜不卡| 亚洲素人一区二区| 国产乱色国产精品免费视频| 色94色欧美sute亚洲线路二| 久久久久久毛片| 国产精品国产三级国产aⅴ入口| 亚洲欧美自拍偷拍色图| 国产激情一区二区三区四区 | 欧美男生操女生| 国产精品白丝在线| 国产尤物一区二区| 欧美一区二区黄色| 亚洲一区二区三区激情| 成人sese在线| 91精品国产乱| 午夜精品久久久久久久久久久| 99久久精品99国产精品| 久久人人爽爽爽人久久久| 日韩黄色片在线观看| 欧美在线观看视频一区二区 | 麻豆国产欧美日韩综合精品二区| 在线视频亚洲一区| 日韩毛片一二三区| 国产jizzjizz一区二区| 久久综合狠狠综合久久激情| 美国三级日本三级久久99| 欧美浪妇xxxx高跟鞋交| 亚洲色图视频网站| 99久久精品情趣| 亚洲男人的天堂在线观看| 国产精品综合二区| 国产亚洲1区2区3区| 国产成人午夜视频| 国产精品电影一区二区三区| 成人黄页毛片网站| 一色屋精品亚洲香蕉网站| 成人精品电影在线观看| 国产精品视频在线看| av中文字幕一区| 亚洲一区免费观看| 欧美精品粉嫩高潮一区二区| 日韩av中文在线观看| 欧美电影在线免费观看| 另类小说欧美激情| 久久综合九色综合97_久久久| 国产精品 欧美精品| 国产精品久线观看视频| 91在线码无精品| 夜夜精品视频一区二区 | 久久99精品国产91久久来源| 欧美草草影院在线视频| 狠狠狠色丁香婷婷综合激情| 久久久精品黄色| 96av麻豆蜜桃一区二区| 亚洲444eee在线观看| 精品久久久网站| 不卡的av电影| 日韩电影在线观看一区| wwwwww.欧美系列| 一本一道综合狠狠老| 久久99这里只有精品| 国产精品福利一区二区| 91久久免费观看| 香蕉加勒比综合久久| 欧美成人vr18sexvr| 白白色 亚洲乱淫| 日本三级韩国三级欧美三级| 国产嫩草影院久久久久| 欧美精品在欧美一区二区少妇| 一区二区在线观看视频在线观看| 精品国产人成亚洲区| 欧洲中文字幕精品| 国产精品一区不卡| 亚洲国产精品嫩草影院| 亚洲国产精品高清| 欧美一区二区大片| 在线欧美日韩精品| 成人激情黄色小说| 激情综合色播激情啊| 亚洲超碰精品一区二区| 国产精品久久久久久久久久免费看| 91精品在线观看入口| 色婷婷精品久久二区二区蜜臀av| 极品少妇一区二区三区精品视频| 一区二区三区日韩欧美精品| 国产精品视频第一区| 欧美不卡在线视频| 91精品国产全国免费观看 | 蜜臂av日日欢夜夜爽一区| 一区二区三区久久| 欧美激情一区二区在线| 精品久久久久av影院| 欧美日韩一区二区三区不卡| 99久久精品一区| 成人做爰69片免费看网站| 精品一区二区精品| 美腿丝袜亚洲色图| 日本欧美在线观看| 亚洲综合成人在线| 亚洲高清在线视频| 一区二区三区日韩欧美精品| 中文字幕成人av| 国产精品免费av| 日本一区二区免费在线| 久久综合九色欧美综合狠狠| 欧美成人女星排名| 精品99一区二区| 日韩视频在线永久播放| 欧美在线视频全部完| 欧美日韩在线一区二区| 欧美在线观看你懂的| 91精品在线免费观看| 日韩欧美在线影院| 精品av久久707| 国产亚洲精品aa午夜观看| 欧美va日韩va| 久久精品夜色噜噜亚洲a∨| 国产情人综合久久777777| 久久久91精品国产一区二区精品 | 一区二区三区在线视频免费观看| 伊人性伊人情综合网| 亚洲一二三级电影| 视频一区中文字幕国产| 蜜臀av性久久久久av蜜臀妖精| 国产乱人伦偷精品视频不卡| 成人黄色av网站在线| 91小宝寻花一区二区三区| 欧美在线观看你懂的| 欧美人牲a欧美精品| 欧美电视剧在线观看完整版| 国产免费观看久久| 一区二区高清视频在线观看| 日韩—二三区免费观看av| 国内精品国产成人国产三级粉色 | 欧美日韩亚洲高清一区二区| 日韩欧美专区在线| 国产精品美女久久久久久久久| 亚洲一二三区视频在线观看| 国产一区二区调教| 日本精品裸体写真集在线观看 | 久久久天堂av| 亚洲影院久久精品| 久久99精品国产麻豆不卡| 99综合电影在线视频| 日韩欧美一二区| 亚洲欧美国产77777| 国内成人自拍视频| 一本久久a久久免费精品不卡| 欧美日韩一区二区三区四区 |