彩色图转化为灰度图
源文件
`timescale 1ns / 1ps
module rgb2gary(input [7:0] rgb_r,input [7:0] rgb_g,input [7:0] rgb_b,output [7:0] gary);
//Verilog不支持小数
// assign gary = 0.299 * rgb_r + 0.587 * rgb_g + 0.114 * rgb_b;
wire [17:0] gary_temp;
//将浮点数转化为定点数 扩大的倍数越大就会越接近(当误差能够接受就是对的)
assign gary_temp = 306 * rgb_r + 601 * rgb_g + 116 * rgb_b; //扩大1024倍并且只取整数部分
assign gary = gary_temp[17:10];//等效于 assign gary = gary_temp >> 10;右移10位就是去掉低10位取高8位
endmodule
激励文件
`timescale 1ns / 1ps
module rgb2gary_tb();
reg [7:0] rgb_r;
reg [7:0] rgb_g;
reg [7:0] rgb_b;wire [7:0] gary;reg [7:0] rgb_data_mem [921599 : 0];//储存器
reg [19 : 0] addr;//储存器的地址 integer fid;//定义存放计算灰度值之后的文件量 rgb2gary rgb2gary_tb(.rgb_r (rgb_r),.rgb_g (rgb_g),.rgb_b (rgb_b),.gary(gary));i