最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【基于FPGA的圖像處理工程】邊緣檢測工程之伽馬矯正模塊代碼解析

2023-07-31 07:12 作者:明德?lián)P易老師  | 我要投稿

【基于FPGA的圖像處理工程】

? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?—邊緣檢測工程:伽馬矯正模塊代碼解析


本文為明德?lián)P原創(chuàng)文章,轉(zhuǎn)載請注明出處!

本模塊的功能是,接收輸入的像素數(shù)據(jù),進行伽馬校正之后輸出。

一、設(shè)計架構(gòu)

1、架構(gòu)圖

下圖為本模塊的架構(gòu)圖。

上圖所示,輸入的像素數(shù)據(jù)din是由R、G、B三部分組成,經(jīng)過數(shù)據(jù)分解電路將其分開,其中din[15:11]表示R的值,賦值給din_r;din[10:5]表示G的值,賦值給din_g;din[4:0]表示B的值,賦值給din_b。三個RAM中存儲的是像素的顏色數(shù)據(jù)對應(yīng)的伽馬矯正之后的數(shù)據(jù),din_r、din_g、din_b分別作為ram_r、ram_g、ram_b的地址,對應(yīng)的輸出dout_r、dout_g、dout_b即是伽馬校正之后的顏色數(shù)據(jù),將三個數(shù)據(jù)經(jīng)過數(shù)據(jù)拼接電路重新按照R、G、B的順序拼接起來得到的dout,就是對應(yīng)輸入的像素數(shù)據(jù)伽馬校正之后的數(shù)據(jù)。

2、RAM

上圖為RAM的地址“address”與輸出“q”的關(guān)系,在RAM中,一個地址就對應(yīng)一個數(shù)據(jù),假設(shè)地址0對應(yīng)的數(shù)據(jù)是0、地址1對應(yīng)數(shù)據(jù)是1、地址2對應(yīng)數(shù)據(jù)是2,這樣以此類推,然而在實際輸出的時候可以發(fā)現(xiàn),輸入相應(yīng)的地址后,“q”是在下一個時鐘周期的時候輸出對應(yīng)的值,也就是輸入經(jīng)過ram之后會有一個時鐘的延時。那么為了實現(xiàn)dout_vld、dout_sop、dout_eop等指示信號的作用,輸入的din_vld、din_sop、din_eop就要經(jīng)過時序邏輯延時一個時鐘才能賦值給輸出的對應(yīng)的信號。



二、信號的意義



三、參考代碼

下面展出本模塊的設(shè)計源代碼:


  1. module? ?mdyGamma(

  2. ? ?? ???clk? ?? ? ,

  3. ? ?? ???rst_n? ???,

  4. ? ?? ???din? ?? ? ,

  5. ? ?? ???din_sop? ?,

  6. ? ?? ???din_eop? ?,

  7. ? ?? ???din_vld? ?,


  8. ? ?? ???dout? ?? ?,

  9. ? ?? ???dout_sop??,

  10. ? ?? ???dout_eop??,

  11. ? ?? ???dout_vld? ?


  12. );


  13. input? ?? ?? ?clk? ?? ?? ?;

  14. input? ?? ?? ?rst_n? ?? ? ;

  15. input [15:0]??din? ?? ?? ?;

  16. input? ?? ?? ?din_sop? ???;

  17. input? ?? ?? ?din_eop? ???;

  18. input? ?? ?? ?din_vld? ???;


  19. output[15:0]??dout? ?? ???;

  20. output? ?? ???dout_sop? ? ;

  21. output? ?? ???dout_eop? ? ;

  22. output? ?? ???dout_vld? ? ;


  23. wire? ?[4:0]??din_r? ?? ? ;

  24. wire? ?[5:0]??din_g? ?? ? ;

  25. wire? ?[4:0]??din_b? ?? ? ;

  26. wire? ?[5:0]??dout_r? ?? ?;

  27. wire? ?[6:0]??dout_g? ?? ?;

  28. wire? ?[5:0]??dout_b? ?? ?;

  29. reg? ? [4:0]??dout_r_ff0??;

  30. reg? ? [4:0]??dout_r_ff1??;

  31. reg? ? [5:0]??dout_g_ff0??;

  32. reg? ? [5:0]??dout_g_ff1??;

  33. reg? ? [4:0]??dout_b_ff0??;

  34. reg? ? [4:0]??dout_b_ff1??;

  35. reg? ?? ?? ???dout_vld_ff0;

  36. reg? ?? ?? ???dout_sop_ff0;

  37. reg? ?? ?? ???dout_eop_ff0;

  38. reg? ?? ?? ???dout_vld? ? ;

  39. reg? ?? ?? ???dout_sop? ? ;

  40. reg? ?? ?? ???dout_eop? ? ;




  41. assign din_r = din[15:11];

  42. assign din_g = din[10:5];

  43. assign din_b = din[4:0];


  44. ram_r u_ram_r(

  45. ? ? .clock? ???(clk),

  46. ? ? .address? ?({1'b0,din_r}),

  47. ? ? .q? ?? ?? ?(dout_r)

  48. );

  49. ram_g u_ram_g(

  50. ? ? .clock? ???(clk),

  51. ? ? .address? ?({1'b0,din_g}),

  52. ? ? .q? ?? ?? ?(dout_g)

  53. );

  54. ram_b u_ram_b(

  55. ? ? .clock? ???(clk),

  56. ? ? .address? ?({1'b0,din_b}),

  57. ? ? .q? ?? ?? ?(dout_b)

  58. );




  59. assign dout = {dout_r[4:0],dout_g[5:0],dout_b[4:0]};



  60. always??@(posedge clk or negedge rst_n)begin

  61. ? ? if(rst_n==1'b0)begin

  62. ? ?? ???dout_vld_ff0 <= 0;

  63. ? ?? ???dout_vld? ???<= 0;

  64. ? ?? ???dout_sop_ff0 <= 0;

  65. ? ?? ???dout_sop? ???<= 0;

  66. ? ?? ???dout_eop_ff0 <= 0;

  67. ? ?? ???dout_eop? ???<= 0;

  68. ? ? end

  69. ? ? else begin

  70. ? ?? ???dout_vld? ???<= din_vld;

  71. ? ?? ???dout_sop? ???<= din_sop;

  72. ? ?? ???dout_eop? ???<= din_eop;

  73. ? ? end

  74. end





  75. endmodule


復(fù)制代碼

?明德?lián)P專注FPGA研究,我司正在連載兩本書籍: 《基于FPGA至簡設(shè)計法實現(xiàn)的圖像邊緣檢測系統(tǒng)》(http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=691)、《ASIC和FPGA時序約束理論與應(yīng)用》(http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=705),有興趣點擊閱讀。


【基于FPGA的圖像處理工程】邊緣檢測工程之伽馬矯正模塊代碼解析的評論 (共 條)

分享到微博請遵守國家法律
台东县| 正蓝旗| 台安县| 新安县| 集安市| 甘洛县| 光山县| 盐源县| 牙克石市| 攀枝花市| 江西省| 青铜峡市| 石台县| 米脂县| 安泽县| 新津县| 天镇县| 奉贤区| 邓州市| 苍溪县| 光泽县| 万载县| 鹤壁市| 庆元县| 汉沽区| 台北县| 台中县| 吴忠市| 陇西县| 晋宁县| 凤山县| 宁明县| 盐亭县| 酒泉市| 江津市| 桂平市| 十堰市| 酒泉市| 德阳市| 建始县| 安龙县|