彩色图转化为灰度图
源文件
`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