⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csc.v

📁 完成ITUR656标准的视频流数据向RGB格式的转换。
💻 V
字号:
module  csc(clock,clocken,reset,y,cr,cb,r,g,b);    parameter OUTSIZE=8;input clock,clocken,reset;input  [OUTSIZE-1:0] y,cr,cb;output   reg [OUTSIZE-1:0] r,g,b; reg[17:0]r_full,g_full,b_full;//R的转换部分R=(1/256)*(298*y+409*cr-57065)wire [17:0] r_kcm_y,r_kcm_cb,r_kcm_cr;//实现对乘法模块的调用mult #(8,18,298)  uut4(.clock(clock),.clocken(clocken),.reset(reset),.color(y),.color_out(r_kcm_y));mult #(8,18,0)  uut5(.clock(clock),.clocken(clocken),.reset(reset),.color(cb),.color_out(r_kcm_cb));mult #(8,18,409)  uut6(.clock(clock),.clocken(clocken),.reset(reset),.color(cr),.color_out(r_kcm_cr));//常数与cr加法部分reg [17:0] r_cr_c,r_y_cb;always@(posedge clock or posedge reset)begin :r_cr_c_adder if(reset)r_cr_c<=0;else if(clocken)r_cr_c<=r_kcm_cr-57065;end//前两项相加always@(posedge clock or posedge reset)begin :r_y_cb_adder if(reset)r_y_cb<=0;else if(clocken)r_y_cb<=r_kcm_y+r_kcm_cb;endalways@(posedge clock or posedge reset)begin:addif(reset)  r_full<=0;else if(clocken)r_full<=r_y_cb+r_cr_c;end//G的转换部分G = (1/256) * ( 298*Y - 100*Cb - 208*Cr + 34718 )wire [17:0] g_kcm_y,g_kcm_cb,g_kcm_cr;mult #(8,18,298)  uut1(.clock(clock),.clocken(clocken),.reset(reset),.color(y),.color_out(g_kcm_y));mult #(8,18,100)  uut2(.clock(clock),.clocken(clocken),.reset(reset),.color(cb),.color_out(g_kcm_cb));mult #(8,18,208)  uut3(.clock(clock),.clocken(clocken),.reset(reset),.color(cr),.color_out(g_kcm_cr));//常数与cr加法部分reg [17:0] g_cr_c;reg [17:0] g_y_cb;always@(posedge clock or posedge reset)begin :g_cr_c_adder if(reset)g_cr_c<=0;else if(clocken)g_cr_c<=34718-g_kcm_cr;end//前两项相加sim:/yuv_rgb_tbalways@(posedge clock or posedge reset)begin :g_y_cb_adder if(reset)g_y_cb<=0;else if(clocken)g_y_cb<=g_kcm_y-g_kcm_cb;endalways@(posedge clock or posedge reset)begin:g_addif(reset)  g_full<=0;else if(clocken)g_full<=g_y_cb+g_cr_c;end//B的转换部分B = (1/256) * ( 298*Y + 516*Cb - 70861 );wire [17:0] b_kcm_y,b_kcm_cb,b_kcm_cr;mult #(8,18,298)  uut7(.clock(clock),.clocken(clocken),.reset(reset),.color(y),.color_out(b_kcm_y));mult #(8,18,516)  uut8(.clock(clock),.clocken(clocken),.reset(reset),.color(cb),.color_out(b_kcm_cb));mult #(8,18,0)  uut9(.clock(clock),.clocken(clocken),.reset(reset),.color(cr),.color_out(b_kcm_cr));reg [17:0] b_cr_c;reg [17:0] b_y_cb;always@(posedge clock or posedge reset)begin :b_cr_c_adder if(reset)b_cr_c<=0;else if(clocken)b_cr_c<=b_kcm_cr-70861;endalways@(posedge clock or posedge reset)begin :b_y_cb_adder if(reset)b_y_cb<=0;else if(clocken)b_y_cb<=b_kcm_y+b_kcm_cb;endalways@(posedge clock or posedge reset)begin:b_addif(reset)b_full<=0;else if(clocken)b_full<=b_y_cb+b_cr_c;endalways@(r_full or g_full or b_full)beginif(g_full[17]) g=0;else if(g_full[16])  g=255;else g=g_full[15:8];endalways@(r_full or g_full or b_full)beginif(b_full[17]) g=0;else if(b_full[16])  g=255;else b=b_full[15:8];end//实现除以256的功能always@(r_full or g_full or b_full)beginif(r_full[17]) r=0;else if(r_full[16])  r=255;else r=r_full[15:8];endendmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -