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

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

?? dct.v

?? 用于視頻圖像編碼的8×8DCT變換
?? V
?? 第 1 頁 / 共 3 頁
字號:
 
end

always @ (posedge CLK)
if (en_ram1reg == 1'b1 && wr_cntr[6] == 1'b0)
ram1_mem[wr_cntr[5:0]] <= z_out;


always @ (posedge CLK)
if (en_ram1reg == 1'b1 && wr_cntr[6] == 1'b1)
ram2_mem[wr_cntr[5:0]] <= z_out;


always @ (posedge CLK)
begin
if (en_ram1reg == 1'b1 && rd_cntr[6] == 1'b0)
  data_out <= ram2_mem[rd_cntr[5:0]];

else if (en_ram1reg == 1'b1 && rd_cntr[6] == 1'b1)
  data_out <= ram1_mem[rd_cntr[5:0]];
else data_out <= 11'b0;
end


/* END MEMORY SECTION */

/* 2D-DCT implementation same as the 1D-DCT implementation */

/* First dct coeeficient appears at the output of the RAM1 after
15 + 64 clk cycles. So the 2nd DCT operation starts after 79 clk cycles. */

always @ (posedge CLK or posedge RST)
   begin
   if (RST)
       begin
       cntr79 <= 7'b0;
       end
   else
       begin
       cntr79 <= cntr79 + 1;
      end
   end

assign en_dct2d = RST ? 1'b0 : (cntr79 == 7'b1001111) ? 1'b1 : en_dct2d;

always @ (posedge CLK or posedge RST)
        begin
          if (RST)
              begin  en_dct2d_reg <= 1'b0; end
          else
              begin  en_dct2d_reg <= en_dct2d ; end
        end

assign data_out_final[10:0] = data_out;

always @ (posedge CLK or posedge RST )
   begin
   if (RST)
       begin
       xb0_in <= 11'b0; xb1_in <= 11'b0; xb2_in <= 11'b0; xb3_in <= 11'b0;
       xb4_in <= 11'b0; xb5_in <= 11'b0; xb6_in <= 11'b0; xb7_in <= 11'b0;
       end
   else if (en_dct2d_reg == 1'b1) 
       begin
       xb0_in <= data_out_final; xb1_in <= xb0_in; xb2_in <= xb1_in; xb3_in <= xb2_in;
       xb4_in <= xb3_in; xb5_in <= xb4_in; xb6_in <= xb5_in; xb7_in <= xb6_in;
       end
   else if (en_dct2d_reg == 1'b0)
       begin
       xb0_in <= 11'b0; xb1_in <= 11'b0; xb2_in <= 11'b0; xb3_in <= 11'b0;
       xb4_in <= 11'b0; xb5_in <= 11'b0; xb6_in <= 11'b0; xb7_in <= 11'b0;
       end
   end

/* register inputs, inputs read in every eighth clk*/

always @ (posedge CLK or posedge RST)
   begin
   if (RST)
       begin
       xb0_reg <= 12'b0; xb1_reg <= 12'b0; xb2_reg <= 12'b0; xb3_reg <= 12'b0;
       xb4_reg <= 12'b0; xb5_reg <= 12'b0; xb6_reg <= 12'b0; xb7_reg <= 12'b0;
       end
   else if (cntr8 == 4'b1000)
       begin
       xb0_reg <= {xb0_in[10],xb0_in}; xb1_reg <= {xb1_in[10],xb1_in}; 
       xb2_reg <= {xb2_in[10],xb2_in}; xb3_reg <= {xb3_in[10],xb3_in};
       xb4_reg <= {xb4_in[10],xb4_in}; xb5_reg <= {xb5_in[10],xb5_in}; 
       xb6_reg <= {xb6_in[10],xb6_in}; xb7_reg <= {xb7_in[10],xb7_in};
       end
   end

always @ (posedge CLK or posedge RST)
   begin
   if (RST)
       begin
       toggleB <= 1'b0;
       end
   else 
       begin 
       toggleB <= ~toggleB;
       end
   end

/* adder / subtractor block */

always @ (posedge CLK or posedge RST)
   begin
   if (RST)
       begin
       add_sub1b <= 12'b0; add_sub2b <= 12'b0; add_sub3b <= 12'b0; add_sub4b <= 12'b0;
       end
   else
       begin
	       if (toggleB == 1'b1)
	          begin
            add_sub1b <= (xb0_reg + xb7_reg); add_sub2b <= (xb1_reg + xb6_reg);
            add_sub3b <= (xb2_reg + xb5_reg); add_sub4b <= (xb3_reg + xb4_reg);
            end
	       else if (toggleB == 1'b0)
	          begin
	          add_sub1b <= (xb7_reg - xb0_reg); add_sub2b <= (xb6_reg - xb1_reg);
            add_sub3b <= (xb5_reg - xb2_reg); add_sub4b <= (xb4_reg - xb3_reg);
	          end
       end
   end

always @ (posedge RST or posedge CLK)
begin
    if (RST)
       begin  
         addsub1b_comp <= 11'b0; save_sign1b <= 1'b0;
       end
    else 
       begin
       case (add_sub1b[11])
       1'b0: begin 
              addsub1b_comp <= add_sub1b; save_sign1b <= 1'b0; 
              end
       1'b1: begin 
              addsub1b_comp <= (-add_sub1b) ; save_sign1b <= 1'b1; 
              end 
       endcase
       end
end

always @ (posedge RST or posedge CLK)
begin
    if (RST)
       begin  
         addsub2b_comp <= 11'b0; save_sign2b <= 1'b0;
       end
    else 
       begin
       case (add_sub2b[11])
       1'b0: begin 
              addsub2b_comp <= add_sub2b; save_sign2b <= 1'b0; 
              end
       1'b1: begin 
              addsub2b_comp <= (-add_sub2b) ; save_sign2b <= 1'b1; 
              end 
       endcase
       end
end

always @ (posedge RST or posedge CLK)
begin
    if (RST)
       begin  
         addsub3b_comp <= 11'b0; save_sign3b <= 1'b0;
       end
    else 
       begin
       case (add_sub3b[11])
       1'b0: begin 
              addsub3b_comp <= add_sub3b; save_sign3b <= 1'b0; 
              end
       1'b1: begin 
              addsub3b_comp <= (-add_sub3b) ; save_sign3b <= 1'b1; 
              end 
       endcase
       end
end

always @ (posedge RST or posedge CLK)
begin
    if (RST)
       begin  
         addsub4b_comp <= 11'b0; save_sign4b <= 1'b0;
       end
    else 
       begin
       case (add_sub4b[11])
       1'b0: begin 
              addsub4b_comp <= add_sub4b; save_sign4b <= 1'b0; 
              end
       1'b1: begin 
              addsub4b_comp <= (-add_sub4b) ; save_sign4b <= 1'b1; 
              end 
       endcase
       end
end

     assign p1b_all = addsub1b_comp * memory1a[6:0];
     assign p2b_all = addsub2b_comp * memory2a[6:0];
     assign p3b_all = addsub3b_comp * memory3a[6:0];
     assign p4b_all = addsub4b_comp * memory4a[6:0];

/* The following instantiation can be used while targetting Virtex2 */
//MULT18X18 mult1b (.A({9'b0,addsub1b_comp}), .B({11'b0,memory1a[6:0]}), .P(p1b_all));
//MULT18X18 mult2b (.A({9'b0,addsub2b_comp}), .B({11'b0,memory2a[6:0]}), .P(p2b_all));
//MULT18X18 mult3b (.A({9'b0,addsub3b_comp}), .B({11'b0,memory3a[6:0]}), .P(p3b_all));
//MULT18X18 mult4b (.A({9'b0,addsub4b_comp}), .B({11'b0,memory4a[6:0]}), .P(p4b_all));

always @ (posedge RST or posedge CLK)
  begin
    if (RST)
      begin
        p1b <= 20'b0; p2b <= 20'b0; p3b <= 20'b0; p4b <= 20'b0; 
      end
    else if (i_wait == 2'b00)
      begin
  
        
        p1b <= (save_sign1b ^ memory1a[7]) ? (-p1b_all[17:0]) :(p1b_all[17:0]);
        p2b <= (save_sign2b ^ memory2a[7]) ? (-p2b_all[17:0]) :(p2b_all[17:0]);
        p3b <= (save_sign3b ^ memory3a[7]) ? (-p3b_all[17:0]) :(p3b_all[17:0]);
        p4b <= (save_sign4b ^ memory4a[7]) ? (-p4b_all[17:0]) :(p4b_all[17:0]);
        end
  end
/*always @ (posedge RST or posedge CLK)
  begin
    if (RST)
      begin
        p1b <= 16'b0; p2b <= 16'b0; p3b <= 16'b0; p4b <= 16'b0; //indexj<= 7;
      end
    else if (i_wait == 2'b00)
      begin
        p1b <= (save_sign1b ^ memory1a[7]) ? (-addsub1b_comp * memory1a[6:0]) :(addsub1b_comp * memory1a[6:0]);
        p2b <= (save_sign2b ^ memory2a[7]) ? (-addsub2b_comp * memory2a[6:0]) :(addsub2b_comp * memory2a[6:0]);
        p3b <= (save_sign3b ^ memory3a[7]) ? (-addsub3b_comp * memory3a[6:0]) :(addsub3b_comp * memory3a[6:0]);
        p4b <= (save_sign4b ^ memory4a[7]) ? (-addsub4b_comp * memory4a[6:0]) :(addsub4b_comp * memory4a[6:0]);
      end
  end

*/
/* The above if else statement used to get the add_sub signals can also be implemented using  the adsu16 library element as follows */

//ADSU16 adsu16_5 (.A({8'b0,xb0_reg}), .B({8'b0,xb7_reg}), .ADD(toggleB), .CI(1'b0), .S(add_sub1b), .OFL(open), .CO(open));
//ADSU16 adsu16_6 (.A({8'b0,xb1_reg}), .B({8'b0,xb6_reg}), .ADD(toggleB), .CI(1'b0), .S(add_sub2b), .OFL(open), .CO(open));
//ADSU16 adsu16_7 (.A({8'b0,xb2_reg}), .B({8'b0,xb5_reg}), .ADD(toggleB), .CI(1'b0), .S(add_sub3b), .OFL(open), .CO(open));
//ADSU16 adsu16_8 (.A({8'b0,xb3_reg}), .B({8'b0,xb4_reg}), .ADD(toggleB), .CI(1'b0), .S(add_sub4b), .OFL(open), .CO(open));

/* multiply the outputs of the add/sub block with the 8 sets of stored coefficients */

/* Final adder. Adding the ouputs of the 4 multipliers */

always @ (posedge CLK or posedge RST)
   begin
   if (RST)
       begin
       dct2d_int1 <= 20'b0; dct2d_int2 <= 20'b0; dct_2d_int <= 20'b0;
       end
   else
       begin
       dct2d_int1 <= (p1b + p2b);
       dct2d_int2 <= (p3b + p4b);
       dct_2d_int <= (dct2d_int1 + dct2d_int2);
       end
   end

assign dct_2d_rnd = dct_2d_int[19:8];
assign dct_2d = dct_2d_int[7] ? (dct_2d_rnd + 1'b1) : dct_2d_rnd;

/* The first 1D-DCT output becomes valid after 14 +64 clk cycles. For the first 
2D-DCT output to be valid it takes 78 + 1clk to write into the ram + 1clk to 
write out of the ram + 8 clks to shift in the 1D-DCT values + 1clk to register 
the 1D-DCT values + 1clk to add/sub + 1clk to take compliment + 1 clk for 
multiplying +  2clks to add product. So the 2D-DCT output will be valid 
at the 94th clk. rdy_out goes high at 93rd clk so that the first data is valid
for the next block*/

always @ (posedge CLK or posedge RST)
   begin
   if (RST)
       begin
       cntr92 <= 8'b0;
       end
   else if (cntr92 < 8'b1011110)
       begin
       cntr92 <= cntr92 + 1;
       end
   else 
       begin
       cntr92 <= cntr92;
       end
   end

assign rdy_out = (cntr92 == 8'b1011110) ? 1'b1 : 1'b0;

endmodule
//module ADSU8 (A, B, ADD,CI,S,OFL,CO); // synthesis syn_black_box
/*input[7:0]  A,B;
input       ADD,CI;
output[7:0] S;
output      OFL,CO;
endmodule*/

//module MULT18X18 (A, B, P); // synthesis syn_black_box
/*input[17:0]  A;
input[17:0]  B;
output[35:0] P;
endmodule*/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本一道本在线视频| 亚洲黄一区二区三区| 中文字幕一区二区三区视频| 亚洲aaa精品| www.日韩在线| 精品国精品国产尤物美女| 一区二区三区免费| 99天天综合性| 国产三级精品三级| 韩国女主播一区二区三区| 欧美日本精品一区二区三区| 亚洲欧洲成人精品av97| 国产69精品一区二区亚洲孕妇| 欧美日本一区二区三区| 亚洲自拍偷拍av| 91日韩在线专区| 国产精品麻豆欧美日韩ww| 另类小说综合欧美亚洲| 欧美日韩高清一区二区不卡| 亚洲一区二区三区四区在线| 色综合天天做天天爱| 亚洲欧美在线另类| eeuss鲁片一区二区三区在线观看| 久久婷婷国产综合国色天香| 另类综合日韩欧美亚洲| 日韩欧美精品在线视频| 丝袜国产日韩另类美女| 欧美日韩一级片网站| 亚洲一区二区三区三| 欧美三级午夜理伦三级中视频| 亚洲精品亚洲人成人网在线播放| 99精品国产热久久91蜜凸| 中文字幕亚洲不卡| 91丨porny丨中文| 亚洲视频中文字幕| 91在线免费播放| 一区二区三区精品在线| 欧美曰成人黄网| 五月综合激情婷婷六月色窝| 欧美一区二区福利在线| 精品一区在线看| 久久婷婷国产综合精品青草| 成人午夜在线视频| 一区二区三区在线视频观看| 欧美日韩综合在线免费观看| 奇米四色…亚洲| 久久精品一区二区三区不卡牛牛| 成人av资源在线| 亚洲精品乱码久久久久| 制服丝袜亚洲播放| 国产综合色精品一区二区三区| 中文字幕欧美日韩一区| 91久久精品日日躁夜夜躁欧美| 午夜av一区二区三区| 欧美精品一区二区三区蜜臀| 成人av免费在线观看| 亚洲成人久久影院| 久久亚洲二区三区| 91黄色免费观看| 美女高潮久久久| 国产精品家庭影院| 这里只有精品99re| 成人免费观看视频| 天天综合天天做天天综合| 久久亚洲一区二区三区明星换脸| 波多野洁衣一区| 青青草原综合久久大伊人精品| 国产欧美一区二区精品性色超碰| 欧美亚洲国产bt| 国产精一区二区三区| 亚洲自拍与偷拍| 亚洲国产岛国毛片在线| 欧美一区二区三区成人| www.日本不卡| 精品一二三四区| 亚洲一区在线观看视频| 国产三级一区二区| 51午夜精品国产| 一本大道久久a久久精二百| 极品美女销魂一区二区三区免费| 亚洲男人的天堂在线aⅴ视频| 欧美成人官网二区| 欧美丝袜自拍制服另类| 成人99免费视频| 国产一区亚洲一区| 蜜桃久久久久久久| 亚洲成人中文在线| 亚洲精品久久久蜜桃| 国产精品丝袜久久久久久app| 欧美成人精品3d动漫h| 欧美日韩一二三| 91网站最新网址| 国产91精品精华液一区二区三区 | 五月天激情小说综合| 国产精品伦一区二区三级视频| 欧美一级黄色片| 欧美三级电影精品| 91黄色激情网站| 一本大道综合伊人精品热热| 成人午夜在线播放| 成人小视频在线| 成人精品国产免费网站| 国产成人午夜电影网| 国产精品88av| 国产一区二区三区av电影| 精品中文字幕一区二区| 美国十次综合导航| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲www啪成人一区二区麻豆| 亚洲一区二区三区四区在线观看| 一区二区三区免费网站| 一区二区三区视频在线观看| 亚洲午夜在线电影| 亚洲精品欧美激情| 亚洲成人av福利| 男男视频亚洲欧美| 麻豆精品国产传媒mv男同| 久久疯狂做爰流白浆xx| 黄色精品一二区| 黄页网站大全一区二区| 国产精品一区二区久久不卡| 国产不卡高清在线观看视频| av电影天堂一区二区在线观看| www.一区二区| 欧美日韩免费高清一区色橹橹 | av电影在线观看不卡| 97精品久久久久中文字幕| 日本韩国欧美一区| 91精品国产欧美一区二区成人| 欧美成人女星排名| 中文字幕久久午夜不卡| 一区二区三区在线不卡| 日韩中文字幕区一区有砖一区| 久久成人免费电影| av在线播放成人| 欧美日韩一卡二卡| 久久久久国色av免费看影院| 国产精品久久久久久一区二区三区 | 欧美丰满高潮xxxx喷水动漫| 欧美mv日韩mv亚洲| 亚洲欧美一区二区三区久本道91| 性做久久久久久久久| 国产一区二区剧情av在线| 一本一道久久a久久精品综合蜜臀| 欧美电影影音先锋| 国产精品免费av| 天堂精品中文字幕在线| 国产精品正在播放| 欧美性一级生活| 久久蜜桃av一区精品变态类天堂| 亚洲图片另类小说| 秋霞电影一区二区| 99久久精品一区二区| 日韩精品在线网站| 亚洲欧美成aⅴ人在线观看| 精品中文字幕一区二区小辣椒| 色狠狠综合天天综合综合| 日韩精品在线一区| 亚洲国产aⅴ成人精品无吗| 国产成人在线视频网站| 欧美日韩在线播放一区| 国产三级精品在线| 另类小说综合欧美亚洲| 色丁香久综合在线久综合在线观看| 欧美精品一区二区三区蜜臀 | 91精品国产综合久久久久久久久久| 国产日产欧产精品推荐色| 麻豆精品在线播放| 欧美日韩一区二区三区高清| 最新欧美精品一区二区三区| 精品一区二区三区免费观看| 欧美日韩国产大片| 一级精品视频在线观看宜春院| 高清视频一区二区| 精品剧情在线观看| 午夜精品影院在线观看| 在线精品视频免费观看| 亚洲欧洲精品天堂一级| 成人av免费观看| 国产欧美一二三区| 国产精品一区二区男女羞羞无遮挡 | 亚洲国产精品精华液ab| 国产精品中文欧美| www成人在线观看| 麻豆91精品视频| 欧美一区二区三区男人的天堂| 一区二区久久久| 日本韩国精品在线| 一区二区在线免费| 色综合天天综合| 亚洲综合在线视频| 在线日韩av片| 亚洲成av人片在线观看| 欧美伊人久久久久久久久影院 | 18成人在线视频| 99re在线精品| 亚洲精品成人精品456| 一本色道a无线码一区v| 亚洲精品自拍动漫在线| 欧美性感一类影片在线播放|