这 现场可编程门阵列 项目 旨在详细显示如何使用图像处理图像 Verilog 从在Verilog中读取输入位图图像(.bmp),进行处理并将处理后的结果写入Verilog中的输出位图图像。 这 full Verilog code for reading image, 图像处理,并提供书写图像。

在这个 现场可编程门阵列 Verilog项目,在Verilog中实现了一些简单的处理操作,例如反转,亮度控制和阈值操作。通过“ parameter.v”文件选择图像处理操作,然后将处理后的图像数据写入位图图像output.bmp以进行验证。 The 图像读取 Verilog代码可作为图像传感器/相机的Verilog模型运行,这对于实时进行功能验证非常有帮助 现场可编程门阵列 图像处理项目。当您想查看BMP格式的输出图像时,图像写入部分对于测试也非常有用。在这个项目中,我在阅读部分添加了一些简单的图像处理代码,以举例说明图像处理,但是您可以轻松地将其删除以获得原始图像数据。本文底部回答了学生提出的所有相关问题。
首先,Verilog无法 读取图像 directly. 要在Verilog中读取.bmp图像,需要将该图像从位图格式转换为十六进制格式。下面是一个Matlab示例代码,用于将位图图像转换为.hex文件。输入图像大小为768x512,图像.hex文件包含位图图像的R,G,B数据。
首先,Verilog无法 读取图像 directly. 要在Verilog中读取.bmp图像,需要将该图像从位图格式转换为十六进制格式。下面是一个Matlab示例代码,用于将位图图像转换为.hex文件。输入图像大小为768x512,图像.hex文件包含位图图像的R,G,B数据。
b=imread('kodim24.bmp'); % 24-bit BMP image RGB888 k=1; for i=512:-1:1 % image is written from the last row to the first row for j=1:768 a(k)=b(i,j,1); a(k+1)=b(i,j,2); a(k+2)=b(i,j,3); k=k+3; end end fid = fopen('kodim24.hex', 'wt'); fprintf(fid, '%x\n', a); disp('Text file write done');disp(' '); fclose(fid); % fpga4student.com FPGA projects, Verilog projects, VHDL projects
要读取图像的十六进制数据文件,Verilog使用以下命令:$ readmemh或$ readmemb(如果图像数据位于二进制文本文件中)。读取图像.hex文件后,RGB图像数据将保存到内存中并读出以进行处理。
以下是图像读取和处理部分的Verilog代码:
/******************************************************************************/ /****************** Module for reading and processing image **************/ /******************************************************************************/ `include "参数" // Include definition file // hzgifts.cn: 现场可编程门阵列 项目s for students
// 现场可编程门阵列 项目: Image processing in Verilog module image_read #( parameter WIDTH = 768, // Image width HEIGHT = 512, // Image height INFILE = "./img/kodim01.hex", // image file START_UP_DELAY = 100, // Delay during start up time HSYNC_DELAY = 160,// Delay between HSYNC pulses VALUE= 100, // value for Brightness operation THRESHOLD= 90, // Threshold value for Threshold operation SIGN=1 // Sign value using for brightness operation // SIGN = 0: Brightness subtraction
// SIGN = 1: Brightness addition ) ( input HCLK, // clock input HRESETn, // Reset (active low) output VSYNC, // Vertical synchronous pulse // This signal is often a way to indicate that one entire image is transmitted. // Just create and is not used, will be used once a video or many images are transmitted. output reg HSYNC, // Horizontal synchronous pulse // An HSYNC indicates that one line of the image is transmitted. // Used to be a horizontal synchronous signals for writing bmp file. output reg [7:0] DATA_R0, // 8 bit Red data (even) output reg [7:0] DATA_G0, // 8 bit Green data (even) output reg [7:0] DATA_B0, // 8 bit Blue data (even) output reg [7:0] DATA_R1, // 8 bit Red data (odd) output reg [7:0] DATA_G1, // 8 bit Green data (odd) output reg [7:0] DATA_B1, // 8 bit Blue data (odd) // Process and transmit 2 pixels in parallel to make the process faster, you can modify to transmit 1 pixels or more if needed output ctrl_done // Done flag ); //------------------------------------------------- // Internal Signals //------------------------------------------------- parameter sizeOfWidth = 8; // data width parameter sizeOfLengthReal = 1179648; // image data : 1179648 bytes: 512 * 768 *3 // local parameters for FSM localparam ST_IDLE = 2'b00,// idle state ST_VSYNC = 2'b01,// state for creating vsync ST_HSYNC = 2'b10,// state for creating hsync ST_DATA = 2'b11;// state for data processing reg [1:0] cstate, // current state nstate; // next state reg start; // start signal: trigger Finite state machine beginning to operate reg HRESETn_d; // delayed reset signal: use to create start signal reg ctrl_vsync_run; // control signal for vsync counter reg [8:0] ctrl_vsync_cnt; // counter for vsync reg ctrl_hsync_run; // control signal for hsync counter reg [8:0] ctrl_hsync_cnt; // counter for hsync reg ctrl_data_run; // control signal for data processing reg [7 : 0] total_memory [0 : sizeOfLengthReal-1];// memory to store 8-bit data image // temporary memory to save image data : size will be WIDTH*HEIGHT*3 integer temp_BMP [0 : WIDTH*HEIGHT*3 - 1]; integer org_R [0 : WIDTH*HEIGHT - 1]; // temporary storage for R component integer org_G [0 : WIDTH*HEIGHT - 1]; // temporary storage for G component integer org_B [0 : WIDTH*HEIGHT - 1]; // temporary storage for B component // counting variables integer i, j; // temporary signals for calculation: details in the paper. integer tempR0,tempR1,tempG0,tempG1,tempB0,tempB1; // temporary variables in contrast and brightness operation integer value,value1,value2,value4;// temporary variables in invert and threshold operation reg [ 9:0] row; // row index of the image reg [10:0] col; // column index of the image reg [18:0] data_count; // data counting for entire pixels of the image //-------------------------------------------------// // -------- Reading data from input file ----------// //-------------------------------------------------// initial begin $readmemh(INFILE,total_memory,0,sizeOfLengthReal-1); // read file from INFILE end // use 3 intermediate signals RGB to save image data always@(start) begin if(start == 1'b1) begin for(i=0; i<WIDTH*HEIGHT*3 ; i=i+1) begin temp_BMP[i] = total_memory[i+0][7:0]; end for(i=0; i<HEIGHT; i=i+1) begin for(j=0; j<WIDTH; j=j+1) begin
// Matlab code writes image from the last row to the first row
// Verilog code does the same in reading to correctly save image pixels into 3 separate RGB mem org_R[WIDTH*i+j] = temp_BMP[WIDTH*3*(HEIGHT-i-1)+3*j+0]; // save Red component org_G[WIDTH*i+j] = temp_BMP[WIDTH*3*(HEIGHT-i-1)+3*j+1];// save Green component org_B[WIDTH*i+j] = temp_BMP[WIDTH*3*(HEIGHT-i-1)+3*j+2];// save Blue component end end end end //----------------------------------------------------// // ---Begin to read image file once reset was high ---// // ---by creating a starting pulse (start)------------// //----------------------------------------------------// always@(posedge HCLK, negedge HRESETn) begin if(!HRESETn) begin start <= 0; HRESETn_d <= 0; end else begin // ______ HRESETn_d <= HRESETn; // | | if(HRESETn == 1'b1 && HRESETn_d == 1'b0) // __0___| 1 |___0____ : starting pulse start <= 1'b1; else start <= 1'b0; end end //-----------------------------------------------------------------------------------------------// // Finite state machine for reading RGB888 data from memory and creating hsync and vsync pulses --// //-----------------------------------------------------------------------------------------------// always@(posedge HCLK, negedge HRESETn) begin if(~HRESETn) begin cstate <= ST_IDLE; end else begin cstate <= nstate; // update next state end end //-----------------------------------------// //--------- State Transition --------------// //-----------------------------------------// // IDLE . VSYNC . HSYNC . DATA always @(*) begin case(cstate) ST_IDLE: begin if(start) nstate = ST_VSYNC; else nstate = ST_IDLE; end ST_VSYNC: begin if(ctrl_vsync_cnt == START_UP_DELAY) nstate = ST_HSYNC; else nstate = ST_VSYNC; end ST_HSYNC: begin if(ctrl_hsync_cnt == HSYNC_DELAY) nstate = ST_DATA; else nstate = ST_HSYNC; end ST_DATA: begin if(ctrl_done) nstate = ST_IDLE; else begin if(col == WIDTH - 2) nstate = ST_HSYNC; else nstate = ST_DATA; end end endcase end // ------------------------------------------------------------------- // // --- counting for time period of vsync, hsync, data processing ---- // // ------------------------------------------------------------------- // always @(*) begin ctrl_vsync_run = 0; ctrl_hsync_run = 0; ctrl_data_run = 0; case(cstate) ST_VSYNC: begin ctrl_vsync_run = 1; end // trigger counting for vsync ST_HSYNC: begin ctrl_hsync_run = 1; end // trigger counting for hsync ST_DATA: begin ctrl_data_run = 1; end // trigger counting for data processing endcase end // counters for vsync, hsync always@(posedge HCLK, negedge HRESETn) begin if(~HRESETn) begin ctrl_vsync_cnt <= 0; ctrl_hsync_cnt <= 0; end else begin if(ctrl_vsync_run) ctrl_vsync_cnt <= ctrl_vsync_cnt + 1; // counting for vsync else ctrl_vsync_cnt <= 0; if(ctrl_hsync_run) ctrl_hsync_cnt <= ctrl_hsync_cnt + 1; // counting for hsync else ctrl_hsync_cnt <= 0; end end // counting column and row index for reading memory always@(posedge HCLK, negedge HRESETn) begin if(~HRESETn) begin row <= 0; col <= 0; end else begin if(ctrl_data_run) begin if(col == WIDTH - 2) begin row <= row + 1; end if(col == WIDTH - 2) col <= 0; else col <= col + 2; // reading 2 pixels in parallel end end end //-------------------------------------------------// //----------------Data counting---------- ---------// //-------------------------------------------------// always@(posedge HCLK, negedge HRESETn) begin if(~HRESETn) begin data_count <= 0; end else begin if(ctrl_data_run) data_count <= data_count + 1; end end assign VSYNC = ctrl_vsync_run; assign ctrl_done = (data_count == 196607)? 1'b1: 1'b0; // done flag //-------------------------------------------------// //------------- Image processing ---------------// //-------------------------------------------------// always @(*) begin HSYNC = 1'b0; DATA_R0 = 0; DATA_G0 = 0; DATA_B0 = 0; DATA_R1 = 0; DATA_G1 = 0; DATA_B1 = 0; if(ctrl_data_run) begin HSYNC = 1'b1; `ifdef BRIGHTNESS_OPERATION /**************************************/ /* BRIGHTNESS ADDITION OPERATION */ /**************************************/ if(SIGN == 1) begin // R0 tempR0 = org_R[WIDTH * row + col ] + VALUE; if (tempR0 > 255) DATA_R0 = 255; else DATA_R0 = org_R[WIDTH * row + col ] + VALUE; // R1 tempR1 = org_R[WIDTH * row + col+1 ] + VALUE; if (tempR1 > 255) DATA_R1 = 255; else DATA_R1 = org_R[WIDTH * row + col+1 ] + VALUE; // G0 tempG0 = org_G[WIDTH * row + col ] + VALUE; if (tempG0 > 255) DATA_G0 = 255; else DATA_G0 = org_G[WIDTH * row + col ] + VALUE; tempG1 = org_G[WIDTH * row + col+1 ] + VALUE; if (tempG1 > 255) DATA_G1 = 255; else DATA_G1 = org_G[WIDTH * row + col+1 ] + VALUE; // B tempB0 = org_B[WIDTH * row + col ] + VALUE; if (tempB0 > 255) DATA_B0 = 255; else DATA_B0 = org_B[WIDTH * row + col ] + VALUE; tempB1 = org_B[WIDTH * row + col+1 ] + VALUE; if (tempB1 > 255) DATA_B1 = 255; else DATA_B1 = org_B[WIDTH * row + col+1 ] + VALUE; end else begin /**************************************/ /* BRIGHTNESS SUBTRACTION OPERATION */ /**************************************/ // R0 tempR0 = org_R[WIDTH * row + col ] - VALUE; if (tempR0 < 0) DATA_R0 = 0; else DATA_R0 = org_R[WIDTH * row + col ] - VALUE; // R1 tempR1 = org_R[WIDTH * row + col+1 ] - VALUE; if (tempR1 < 0) DATA_R1 = 0; else DATA_R1 = org_R[WIDTH * row + col+1 ] - VALUE; // G0 tempG0 = org_G[WIDTH * row + col ] - VALUE; if (tempG0 < 0) DATA_G0 = 0; else DATA_G0 = org_G[WIDTH * row + col ] - VALUE; tempG1 = org_G[WIDTH * row + col+1 ] - VALUE; if (tempG1 < 0) DATA_G1 = 0; else DATA_G1 = org_G[WIDTH * row + col+1 ] - VALUE; // B tempB0 = org_B[WIDTH * row + col ] - VALUE; if (tempB0 < 0) DATA_B0 = 0; else DATA_B0 = org_B[WIDTH * row + col ] - VALUE; tempB1 = org_B[WIDTH * row + col+1 ] - VALUE; if (tempB1 < 0) DATA_B1 = 0; else DATA_B1 = org_B[WIDTH * row + col+1 ] - VALUE; end `endif /**************************************/ /* INVERT_OPERATION */ /**************************************/ `ifdef INVERT_OPERATION value2 = (org_B[WIDTH * row + col ] + org_R[WIDTH * row + col ] +org_G[WIDTH * row + col ])/3; DATA_R0=255-value2; DATA_G0=255-value2; DATA_B0=255-value2; value4 = (org_B[WIDTH * row + col+1 ] + org_R[WIDTH * row + col+1 ] +org_G[WIDTH * row + col+1 ])/3; DATA_R1=255-value4; DATA_G1=255-value4; DATA_B1=255-value4; `endif /**************************************/ /********THRESHOLD OPERATION *********/ /**************************************/ `ifdef THRESHOLD_OPERATION value = (org_R[WIDTH * row + col ]+org_G[WIDTH * row + col ]+org_B[WIDTH * row + col ])/3; if(value > THRESHOLD) begin DATA_R0=255; DATA_G0=255; DATA_B0=255; end else begin DATA_R0=0; DATA_G0=0; DATA_B0=0; end value1 = (org_R[WIDTH * row + col+1 ]+org_G[WIDTH * row + col+1 ]+org_B[WIDTH * row + col+1 ])/3; if(value1 > THRESHOLD) begin DATA_R1=255; DATA_G1=255; DATA_B1=255; end else begin DATA_R1=0; DATA_G1=0; DATA_B1=0; end `endif end end endmodule
这 image processing operation is selected in the following "参数" file. To change the processing operation, just switch the comment line.
/***************************************/ /****************** Definition file ********/ /************** **********************************************/ `define INPUTFILENAME "your_image.hex" // Input file name `define OUTPUTFILENAME "output.bmp" // Output file name // Choose the operation of code by delete // in the beginning of the selected line //`define BRIGHTNESS_OPERATION `define INVERT_OPERATION //`define THRESHOLD_OPERATION // hzgifts.cn FPGA projects, Verilog projects, VHDL projects
这 following Verilog code is to write the processed image data to a bitmap image for verification:
/****************** Module for writing .bmp image *************/ /***********************************************************/ // hzgifts.cn 现场可编程门阵列 项目s, Verilog projects, VHDL projects // Verilog project: Image processing in Verilog module image_write #(parameter WIDTH = 768, // Image width HEIGHT = 512, // Image height INFILE = "output.bmp", // Output image BMP_HEADER_NUM = 54 // Header for bmp image ) ( input HCLK, // Clock input HRESETn, // Reset active low input hsync, // Hsync pulse input [7:0] DATA_WRITE_R0, // Red 8-bit data (odd) input [7:0] DATA_WRITE_G0, // Green 8-bit data (odd) input [7:0] DATA_WRITE_B0, // Blue 8-bit data (odd) input [7:0] DATA_WRITE_R1, // Red 8-bit data (even) input [7:0] DATA_WRITE_G1, // Green 8-bit data (even) input [7:0] DATA_WRITE_B1, // Blue 8-bit data (even) output reg Write_Done ); // hzgifts.cn FPGA projects, Verilog projects, VHDL projects //-----------------------------------// //-------Header data for bmp image-----// //-------------------------------------// // Windows BMP files begin with a 54-byte header initial begin BMP_header[ 0] = 66;BMP_header[28] =24; BMP_header[ 1] = 77;BMP_header[29] = 0; BMP_header[ 2] = 54;BMP_header[30] = 0; BMP_header[ 3] = 0;BMP_header[31] = 0; BMP_header[ 4] = 18;BMP_header[32] = 0; BMP_header[ 5] = 0;BMP_header[33] = 0; BMP_header[ 6] = 0;BMP_header[34] = 0; BMP_header[ 7] = 0;BMP_header[35] = 0; BMP_header[ 8] = 0;BMP_header[36] = 0; BMP_header[ 9] = 0;BMP_header[37] = 0; BMP_header[10] = 54;BMP_header[38] = 0; BMP_header[11] = 0;BMP_header[39] = 0; BMP_header[12] = 0;BMP_header[40] = 0; BMP_header[13] = 0;BMP_header[41] = 0; BMP_header[14] = 40;BMP_header[42] = 0; BMP_header[15] = 0;BMP_header[43] = 0; BMP_header[16] = 0;BMP_header[44] = 0; BMP_header[17] = 0;BMP_header[45] = 0; BMP_header[18] = 0;BMP_header[46] = 0; BMP_header[19] = 3;BMP_header[47] = 0; BMP_header[20] = 0;BMP_header[48] = 0; BMP_header[21] = 0;BMP_header[49] = 0; BMP_header[22] = 0;BMP_header[50] = 0; BMP_header[23] = 2;BMP_header[51] = 0; BMP_header[24] = 0;BMP_header[52] = 0; BMP_header[25] = 0;BMP_header[53] = 0; BMP_header[26] = 1; BMP_header[27] = 0; end //---------------------------------------------------------// //--------------Write .bmp file ----------------------// //----------------------------------------------------------// initial begin fd = $fopen(INFILE, "wb+"); end always@(Write_Done) begin // once the processing was done, bmp image will be created if(Write_Done == 1'b1) begin for(i=0; i<BMP_HEADER_NUM; i=i+1) begin $fwrite(fd, "%c", BMP_header[i][7:0]); // write the header end for(i=0; i<WIDTH*HEIGHT*3; i=i+6) begin // write R0B0G0 and R1B1G1 (6 bytes) in a loop $fwrite(fd, "%c", out_BMP[i ][7:0]); $fwrite(fd, "%c", out_BMP[i+1][7:0]); $fwrite(fd, "%c", out_BMP[i+2][7:0]); $fwrite(fd, "%c", out_BMP[i+3][7:0]); $fwrite(fd, "%c", out_BMP[i+4][7:0]); $fwrite(fd, "%c", out_BMP[i+5][7:0]); end end end
这 header data for the bitmap image is very important and it is published 这里 。如果没有标题数据,则无法正确显示写入的图像。在Verilog HDL中,$ fwrite命令用于将数据写入文件。
接下来,让我们编写一个测试平台Verilog代码以验证图像处理操作。
`timescale 1ns/1ps /**************************************************/ /******* Testbench for simulation ****************/ /*********************************************/ // hzgifts.cn FPGA projects, Verilog projects, VHDL projects // Verilog project: Image processing in Verilog `include "参数" // include definition file module tb_simulation; //------------------ // Internal Signals //------------------------------------------------- reg HCLK, HRESETn; wire vsync; wire hsync; wire [ 7 : 0] data_R0; wire [ 7 : 0] data_G0; wire [ 7 : 0] data_B0; wire [ 7 : 0] data_R1; wire [ 7 : 0] data_G1; wire [ 7 : 0] data_B1; wire enc_done; image_read #(.INFILE(`INPUTFILENAME)) u_image_read ( .HCLK (HCLK ), .HRESETn (HRESETn ), .VSYNC (vsync ), .HSYNC (hsync ), .DATA_R0 (data_R0 ), .DATA_G0 (data_G0 ), .DATA_B0 (data_B0 ), .DATA_R1 (data_R1 ), .DATA_G1 (data_G1 ), .DATA_B1 (data_B1 ), .ctrl_done (enc_done) ); image_write #(.INFILE(`OUTPUTFILENAME)) u_image_write ( .HCLK(HCLK), .HRESETn(HRESETn), .hsync(hsync), .DATA_WRITE_R0(data_R0), .DATA_WRITE_G0(data_G0), .DATA_WRITE_B0(data_B0), .DATA_WRITE_R1(data_R1), .DATA_WRITE_G1(data_G1), .DATA_WRITE_B1(data_B1), .Write_Done() ); //------------- // Test Vectors //------------------------------------- initial begin HCLK = 0; forever #10 HCLK = ~HCLK; end initial begin HRESETn = 0; #25 HRESETn = 1; end endmodule
最后,我们可以进行仿真以验证图像处理代码。让我们使用以下图像作为输入位图文件:

输入位图图像
运行仿真6ms,关闭仿真并打开输出图像以检查结果。以下是由parameter.v中的选定操作处理的输出图像:

反转后输出位图图像

阈值操作后输出位图图像

减去亮度后输出位图图像
由于读取代码是为了模拟目的而对图像传感器/相机建模,因此建议不要合成代码。如果您真的要合成处理代码并直接在其上运行 现场可编程门阵列 ,您需要用块存储器(RAM)替换代码中的这些图像阵列(total_memory,temp_BMP,org_R,org_B,org_G)和设计地址生成器,以从块存储器中读取图像数据。
在收到与该项目相关的许多问题之后,以下是对您问题的回答:
1.有关如何运行模拟的说明和教程:
2. 可以下载此图像处理项目的完整Verilog代码 这里 . 运行大约6毫秒的仿真并关闭仿真,然后您将能够看到输出图像。
3. 这 reading part operates as a Verilog model of an image sensor/camera (output RGB data, HSYNC, VSYNC, HCLK). 这 Verilog image reading code is extremely useful for functional verification in real-time FPGA image/video projects.
4.在这个项目中,我添加了图像处理部分以制作图像增强示例。如果只想将图像传感器模型用于验证图像处理设计,则可以轻松删除处理部分以仅获取原始图像数据。
5.将图像保存到三个单独的RGB内存中:由于Matlab代码将图像的十六进制文件从最后一行写入到第一行,因此RGB保存代码(org_R,org_B,org_G)在读取temp_BMP内存以保存RGB方面的作用相同数据正确。如果您想以其他方式进行更改,则可以相应地进行更改。
6.如果要更改图像大小,可能会发现以下有关BMP标头的说明很有用:
图像大小= 768 * 512 * 3 = 1179648字节
BMP标头= 54字节
BMP文件大小=图像大小+ BMP标头= 1179702字节
将其转换为十六进制数:十进制1179702 =十六进制120036
这n 4-byte size of BMP file: 00H, 12 in Hexa = 18 Decimal, 00H, 36 in Hexa = 54 Decimal
这就是我们获得以下值的方式:
BMP_header [2] = 54;
BMP_header [3] = 0;
BMP_header [4] = 18;
BMP_header [5] = 0;
图像宽度= 768 =>十六进制:0x0300。图像宽度的4个字节分别是0、3、0、0。 这样便可以获取以下值:
BMP_header [18] = 0;
BMP_header [19] = 3;
BMP_header [20] = 0;
BMP_header [21] = 0;
图像高度= 512 =>十六进制:0x0200。 图像宽度的4个字节为0、2、0、0。 这就是我们获得以下值的方式:
BMP_header [22] = 0;
BMP_header [23] = 2;
BMP_header [24] = 0;
BMP_header [25] = 0;
7. 您不应该合成此代码,因为它不是为在FPGA上运行而设计的, 而是出于功能验证的目的. 如果您真的想合成此代码(读取和处理),并且 将图像加载到FPGA 要直接在FPGA上进行处理,请替换所有温度。通过块RAM变量(org_R,org_B,org_G,tmp_BMP = total_memory)并生成用于读取图像数据的地址(删除始终@(start)和所有“ for循环”-这些是出于仿真目的)。有两种方法:1.编写RAM代码,并使用$ readmemh将图像数据初始化到内存中; 2.使用Xilinx Core Generator或Altera MegaFunction生成块存储器,并将图像数据加载到内存的初始值(对于Xilinx Core Gen..coe文件,对于Altera MegaFunction.mif),然后从内存中读取图像数据并处理(FSM设计)。
8.在此项目中,同时读取两个偶数和旧像素以加快处理速度,但是您可以根据设计更改要读取的像素数。
9.写作 Verilog 代码对于测试目的也非常有帮助,因为您可以看到BMP格式的输出。
10。 如果要进行实时图像处理,可以检查以下内容以获取相机接口代码: Basys 3 FPGA OV7670摄像机
29。 复用器的Verilog代码
3. 这 reading part operates as a Verilog model of an image sensor/camera (output RGB data, HSYNC, VSYNC, HCLK). 这 Verilog image reading code is extremely useful for functional verification in real-time FPGA image/video projects.
4.在这个项目中,我添加了图像处理部分以制作图像增强示例。如果只想将图像传感器模型用于验证图像处理设计,则可以轻松删除处理部分以仅获取原始图像数据。
5.将图像保存到三个单独的RGB内存中:由于Matlab代码将图像的十六进制文件从最后一行写入到第一行,因此RGB保存代码(org_R,org_B,org_G)在读取temp_BMP内存以保存RGB方面的作用相同数据正确。如果您想以其他方式进行更改,则可以相应地进行更改。
6.如果要更改图像大小,可能会发现以下有关BMP标头的说明很有用:
图像大小= 768 * 512 * 3 = 1179648字节
BMP标头= 54字节
BMP文件大小=图像大小+ BMP标头= 1179702字节
将其转换为十六进制数:十进制1179702 =十六进制120036
这n 4-byte size of BMP file: 00H, 12 in Hexa = 18 Decimal, 00H, 36 in Hexa = 54 Decimal
这就是我们获得以下值的方式:
BMP_header [2] = 54;
BMP_header [3] = 0;
BMP_header [4] = 18;
BMP_header [5] = 0;
图像宽度= 768 =>十六进制:0x0300。图像宽度的4个字节分别是0、3、0、0。 这样便可以获取以下值:
BMP_header [18] = 0;
BMP_header [19] = 3;
BMP_header [20] = 0;
BMP_header [21] = 0;
图像高度= 512 =>十六进制:0x0200。 图像宽度的4个字节为0、2、0、0。 这就是我们获得以下值的方式:
BMP_header [22] = 0;
BMP_header [23] = 2;
BMP_header [24] = 0;
BMP_header [25] = 0;
7. 您不应该合成此代码,因为它不是为在FPGA上运行而设计的, 而是出于功能验证的目的. 如果您真的想合成此代码(读取和处理),并且 将图像加载到FPGA 要直接在FPGA上进行处理,请替换所有温度。通过块RAM变量(org_R,org_B,org_G,tmp_BMP = total_memory)并生成用于读取图像数据的地址(删除始终@(start)和所有“ for循环”-这些是出于仿真目的)。有两种方法:1.编写RAM代码,并使用$ readmemh将图像数据初始化到内存中; 2.使用Xilinx Core Generator或Altera MegaFunction生成块存储器,并将图像数据加载到内存的初始值(对于Xilinx Core Gen..coe文件,对于Altera MegaFunction.mif),然后从内存中读取图像数据并处理(FSM设计)。
8.在此项目中,同时读取两个偶数和旧像素以加快处理速度,但是您可以根据设计更改要读取的像素数。
9.写作 Verilog 代码对于测试目的也非常有帮助,因为您可以看到BMP格式的输出。
10。 如果要进行实时图像处理,可以检查以下内容以获取相机接口代码: Basys 3 FPGA OV7670摄像机
推荐的 Verilog projects:
2. FIFO存储器的Verilog代码
3. 用于16位单周期MIPS处理器的Verilog代码
4. Verilog HDL中的可编程数字延迟计时器
5. 用于数字电路中基本逻辑组件的Verilog代码
6. 用于32位无符号除法器的Verilog代码
7. 用于定点矩阵乘法的Verilog代码
8. Verilog HDL中的车牌许可证识别
9. 提前进位乘法器的Verilog代码
10。 微处理器的Verilog代码
11。 4x4乘法器的Verilog代码
12 停车场系统的Verilog代码
13 使用Verilog HDL在FPGA上进行图像处理
14。 如何使用Verilog HDL将文本文件加载到FPGA中
15 交通信号灯控制器的Verilog代码
16。 现场可编程门阵列 上的闹钟的Verilog代码
17。 比较器设计的Verilog代码
18岁 D触发器的Verilog代码
19 Full Adder的Verilog代码
20 带testbench的计数器的Verilog代码
21 16位RISC处理器的Verilog代码
22 用于在FPGA上反跳按钮的Verilog代码
23。 如何为双向/输入端口编写Verilog Testbench
3. 用于16位单周期MIPS处理器的Verilog代码
4. Verilog HDL中的可编程数字延迟计时器
5. 用于数字电路中基本逻辑组件的Verilog代码
6. 用于32位无符号除法器的Verilog代码
7. 用于定点矩阵乘法的Verilog代码
8. Verilog HDL中的车牌许可证识别
9. 提前进位乘法器的Verilog代码
10。 微处理器的Verilog代码
11。 4x4乘法器的Verilog代码
12 停车场系统的Verilog代码
13 使用Verilog HDL在FPGA上进行图像处理
14。 如何使用Verilog HDL将文本文件加载到FPGA中
15 交通信号灯控制器的Verilog代码
16。 现场可编程门阵列 上的闹钟的Verilog代码
17。 比较器设计的Verilog代码
18岁 D触发器的Verilog代码
19 Full Adder的Verilog代码
20 带testbench的计数器的Verilog代码
21 16位RISC处理器的Verilog代码
22 用于在FPGA上反跳按钮的Verilog代码
23。 如何为双向/输入端口编写Verilog Testbench
24 Verilog 和LogiSim中的Tic Tac Toe游戏
25岁 Verilog 中的32位5级流水线MIPS处理器(第1部分)
26。 Verilog 中的32位5级流水线MIPS处理器(第2部分)
27。 Verilog 中的32位5级流水线MIPS处理器(第3部分)
28岁 解码器的Verilog代码25岁 Verilog 中的32位5级流水线MIPS处理器(第1部分)
26。 Verilog 中的32位5级流水线MIPS处理器(第2部分)
27。 Verilog 中的32位5级流水线MIPS处理器(第3部分)
29。 复用器的Verilog代码
嗨范
回复 删除我叫珠宝。一世'来自印度,在Manipal大学获得B.tech学位。您使用verilog HDL进行图像处理的代码确实很有帮助。一世'm使用verilog HDL制作灰度图像的项目称为JPEG编码器。您能帮我提供有关此主题的代码吗?
问候,
珠宝DOMINIC SAVIO安东尼
请给我发电子邮件。谢谢。
删除范!
删除如果您有与使用正向离散余弦变换进行JPEG压缩相关的代码,请发送给我,我的电子邮件ID为[email protected]
我可以得到完整的图像处理VHDL
删除请将代码共享给[email protected]
删除[email protected]
回复 删除给你发了电子邮件。请使用Verilog / VHDL fpga4student.com及时了解FPGA项目。谢谢
删除您好Van Loi Le,代码非常有用。谢谢。能否将完整的Verilog源代码和测试平台发送给我,并附带您在此处使用的图像
删除提前致谢
([email protected])
谢谢
回复 删除You are welcome. Please help to like and share the site with your friends: //www.facebook.com/fpga4student and keep updates with coming projects.Thanks.
删除您好Van Loi Le,代码非常有用。谢谢。您能给我发送完整的Verilog源代码吗
回复 删除请使用Verilog / VHDL fpga4student.com及时了解FPGA项目。谢谢
删除你的电子邮箱是什么?
回复 删除您好,请分享我的电子邮件项目:[email protected]
回复 删除给你发了电子邮件。请使用Verilog / VHDL fpga4student.com及时了解FPGA项目。谢谢
删除你好,你也可以和我分享这个项目吗? [email protected]
删除嗨,代码非常有用,请给我发送完整的代码
回复 删除我的邮件编号是[email protected]
回复 删除给你发了电子邮件。请使用Verilog / VHDL fpga4student.com及时了解FPGA项目。谢谢
删除嘿[email protected]
删除你能发给我密码吗
电子邮件:[email protected]
您能将完整的Verilog源文件发送给我吗?我的邮件ID为[email protected]。它'd对我的图像处理项目非常有用。
回复 删除请检查您的电子邮件
回复 删除嗨,范,您能为我提供完整的源代码,我想学习这个项目,很多
删除我的电子邮件:[email protected]
您能确定完整的Verilog源文件吗?我的电子邮件是[email protected]。
回复 删除请检查您的电子邮件。
删除嗨,您的代码对我来说非常有用。请分享我的电子邮件项目:[email protected]
回复 删除谢谢你。
给你发了电子邮件。请使用Verilog / VHDL fpga4student.com及时了解FPGA项目。谢谢
删除嗨,您能自由分享我的代码吗,因为我付不起钱。如果您愿意这样做,将非常有帮助。
删除嗨...我发现您的代码在我的项目中更有用。 。能否请你分享我。 。我的电子邮件:[email protected]
回复 删除你好,
回复 删除请检查您的电子邮件
优秀的实施。
删除您能否将整个Verilog文件转发给我,以便我可以在我的项目中使用,
电子邮件:[email protected]
我对使用的两个变量有疑问"total_memory" and "sizeOfLengthReal"。要输入什么值?
这se are size of the image memory. It depends on your image size.
删除您好,请分享我的电子邮件项目:[email protected]
回复 删除嗨,我的电子邮件ID为:[email protected],请发送电子邮件给我源代码。
回复 删除给我发电子邮件:[email protected]
回复 删除[email protected],谢谢:)
回复 删除能给我发代码给我吗
回复 删除[email protected]
使用Verilog HDL在FPGA上进行图像处理的精美教程。感谢您的分享。 色彩校正服务 在图像处理中起着至关重要的作用。
回复 删除你能分享这个代码吗?我的邮件ID是[email protected] .....
回复 删除提前致谢。
凉爽的!
回复 删除[email protected]
非常有用的资源。我需要在fpga中加载视频文件。您能帮我解决我必须遵循的步骤吗?提前致谢。
回复 删除我的邮件ID是:[email protected]
主席先生,自2016年以来,我一直关注您的博客,目前,我正在verilog上进行一个项目,以使用小波变换算法设计编解码器,先生,我需要您的帮助。您能帮我完成我的项目吗?
回复 删除好贴 ! [email protected]
回复 删除非常好!!我想使用您的代码。电子邮件[email protected]
回复 删除能否给我发送代码@ [email protected]
回复 删除您可以将代码邮寄到[email protected]吗?
回复 删除您好,如果您可以将代码分享到[email protected],我们将不胜感激。
回复 删除谢谢!
请发送完整的代码给我们,我们是否需要zed-board来处理输出?我的电子邮件地址是[email protected]。提前致谢...
回复 删除太好了您做得很好,它将为像我这样的新学习者提供很多帮助。先生,您能和我分享代码,以便我练习吗。先生,请通过我的电子邮件地址[email protected]与我分享完整的代码
回复 删除提前致谢。祝你好运。
请检查您的电子邮件。
回复 删除行政
我需要完整的fpga代码。可以吗?
回复 删除你的电子邮箱是什么?
回复 删除此评论已被作者删除。
回复 删除您能给我发送源代码吗?我的电子邮件地址是[email protected]。先感谢您!
回复 删除能否获取此过程的完整Verilog代码以在我的项目中使用?这对我会很有帮助。邮件:[email protected]
回复 删除你能把完整的Verilog代码发给我吗's对我的项目将非常有帮助。顺便说一下,作为一个新学习者,它将对我有很大的帮助。我的电子邮件:[email protected]。
回复 删除您能否将完整的Verilog代码发送给我,我的电子邮件是:[email protected],非常感谢
回复 删除您能给我发送完整的Verilog代码吗?
回复 删除电子邮件:[email protected]
谢谢你
你能给我发送完整的Verilog代码吗's对我的项目将非常有帮助。
回复 删除电子邮件:[email protected]
谢谢你
It'对我来说非常有用。您能给我完整的Verilog代码吗?
回复 删除我的电子邮件:[email protected]
你好,
回复 删除我可以要求完整的Verilog代码,这太神奇了?一世'我做一个个人项目和完整的代码会帮助我,非常感谢。
电子邮件:[email protected]
嘿[email protected]
删除你能发给我密码吗
电子邮件:[email protected]
请查看你的邮箱
回复 删除也请给我发邮件..
删除请寄给我。我的电子邮件是[email protected]。谢谢
回复 删除请给我发密码。我的电子邮件ID为[email protected]
回复 删除LOI LE VAN ...请尽快将完整代码寄给我'紧急...谢谢
回复 删除我的邮件编号是[email protected]
请寄给我完整的代码。我的电子邮件是[email protected]
删除谢谢。
可以获取此过程的完整Verilog代码以在我的项目中使用。这对我会很有帮助。邮件:[email protected]
回复 删除有人有代码吗?你能发给我吗?
回复 删除fabyes95[email protected]
你能给我发送完整的代码吗[email protected]
回复 删除你能给我发代码[email protected]谢谢
回复 删除先生,我的工作很好,我很想看看完整的代码。
回复 删除请通过[email protected]通过电子邮件发送给我
先生,辛苦了,您能给我发代码[email protected]谢谢
回复 删除很棒的项目,谢谢
回复 删除能否将整个代码发送给我,在此先感谢[email protected]
回复 删除Loi似乎非常有用,如果您发送完整的源代码[email protected],请不胜感激。
回复 删除请发送完整的源代码到[email protected]
回复 删除我可以问你吗?
回复 删除我可以'不要使用verilog进行图像处理。那么如何用图像输入并用图像输出呢?
您使用哪种语言?
回复 删除Verilog 公司
删除这 challenge is to process the output from the vedio driver to fpga.Since I'm a beginner, I can'甚至看不到输入和输出。
请给我发送文件。 [email protected]
回复 删除请明确说明,该帖子介绍了如何读写图像。
回复 删除谢谢,但是代码使我有所帮助。所以,请。
删除谢谢,但是代码使我有所帮助。所以,请。
删除[email protected]
回复 删除善意邮寄
您好,谢谢您提供信息,能否将源代码[email protected]发送给我,谢谢
回复 删除谢谢那个'太好了。但是,您在什么板上实施这些代码?
回复 删除请向我发送完整的代码,我的电子邮件ID为[email protected]
回复 删除您好,谢谢您提供信息,能给我发送源代码[email protected]谢谢
回复 删除您能发送完整的代码吗
回复 删除我的电子邮件[email protected]
谢谢你...
你好,这段代码非常有用。
回复 删除请发送到代码
[email protected]
你好,范。
回复 删除您能将完整的Verilog源文件发送给我吗?
对我来说将非常有用。
谢谢你。祝你今天过得愉快。
我的电子邮件是[email protected]
你好范
回复 删除你能给我发vhdl代码吗?谢谢
[email protected]
您好,谢谢您提供信息,也可以给我发送源代码[email protected]谢谢
回复 删除我可以获取源代码吗? [email protected]
回复 删除您好,有人可以给我该项目的完整代码吗,我的电子邮件是[email protected]
回复 删除您好,有人可以给我该项目的完整代码吗,我的电子邮件是[email protected]
回复 删除嗨Lợi,您能寄给我该项目的完整代码吗?我有一个有关使用机器学习进行图像处理的项目,我不知道将文件读取到缓冲区并将数据从缓冲区传输到另一个缓冲区。我的电子邮件是[email protected]。非常感谢您的帮助!!!
回复 删除请给我完整的代码先生。我想以此作为我的项目。提前致谢。
回复 删除[email protected]
[email protected]
回复 删除你能给我发代码吗
不
删除您好,您能给我发送源代码吗? [email protected]
回复 删除我可以获取源代码吗? [email protected]
回复 删除我可以获取源代码吗? [email protected]
回复 删除检查您的电子邮件。谢谢。
回复 删除您好先生,请您通过电子邮件将完整代码([email protected])发送给我,我'我试图做一个需要在fpga中加载图像以对其进行处理的项目,这对您获得完整的代码很有帮助。
回复 删除您能给我发电子邮件吗,源代码为[email protected]
回复 删除能否请您通过电子邮件将源代码发送给我[email protected]。我上次提供的电子邮件ID不正确。
回复 删除嗨...我发现您的代码在我的项目中更有用。 。能否请你分享我。 。我的电子邮件:[email protected]
回复 删除你好,,,
回复 删除如果您有jpeg图像压缩的Verilog HDL代码,请给我,
我的电子邮件ID为[email protected]
伟大的!!!
回复 删除请发电子邮件给我。 [email protected]
好信息。
回复 删除我可以获取完整的源代码吗?
我的电子邮件地址是[email protected]
好信息。
回复 删除我可以获取完整的源代码吗?
我的电子邮件地址是[email protected]
I'我无法执行您给出的代码,因为我没有'无法清楚地了解什么是输入和输出以及如何分配内存。你能帮我么...
回复 删除主席先生'我无法执行代码,因为我不知道总内存和SizeOflengthReal-1是多少。一世'我正在为此做一个项目。那么您能给我发代码吗?
回复 删除我的g电子邮件地址是:[email protected]
这 provided code is a good start in image processing on FPGA. Spend some time to figure it out.
回复 删除总内存是从.hex文件读取图像数据的内存。
SizeOflengthReal-1是总内存的大小。图片尺寸为768x512像素。每个像素具有3个数据(R-G-B)。每个数据R或G或B具有8位。然后,您可以计算总内存大小。
您的示例正是我所需要的。能否将源代码通过电子邮件发送至[email protected]谢谢。
回复 删除这 provided code is good enough for you to start an image processing project on FPGA. Spend some time to figure it out.
回复 删除i和j值应该是什么。
回复 删除你好谢谢。我更新了i和j代码值。基本上,i和j是要从图像的所有像素(R,G,B)读取或写入的存储器的索引。
删除教育岗位。喜欢并欣赏它。继续继续分享。
回复 删除感谢您的客气话。非常感谢。当然,将继续提供更具教育意义的FPGA项目。
删除谢谢,这篇文章很有教育意义,并且很好地解释了。请给我发完整的源代码。我的邮件ID是[email protected]。
回复 删除你能把源代码发给我吗? [email protected]
回复 删除谁能解释他如何计算字节大小(2个签名字节后的4个字节)'BM'在BITMAP标头中)?一世'我很困惑。我尝试将其转换为十六进制,然后计算文件大小,但看起来不正确。
回复 删除BMP_header [2] = 54;
BMP_header [3] = 0;
BMP_header [4] = 18;
BMP_header [5] = 0;
图像大小= 768 * 512 * 3 = 1179648字节
删除BMP标头= 54字节
BMP文件大小=图像大小+ BMP标头= 1179702字节
将其转换为十六进制数:十进制1179702 =十六进制120036
这n 4-byte size of BMP file: 00H, 12 in Hexa = 18 Decimal, 00H, 36 in Hexa = 54 Decimal
那's如何获取值:
BMP_header [2] = 54;
BMP_header [3] = 0;
BMP_header [4] = 18;
BMP_header [5] = 0;
这是一个非常不错的项目。...我有可能获得完整的源代码吗?
回复 删除如果是这样,有人可以通过[email protected]将它们发送给我。
您能否将源代码发送到[email protected]?
回复 删除此评论已被作者删除。
回复 删除大家好,
回复 删除这 provided information on this post are pretty enough for you to get started with image processing on FPGA. Please spend some time to figure it out so that you can learn a lot from the experience.
这篇文章是在FPGA上进行图像处理的教程。不会提供完整的代码。
谢谢。
行政
如果您有任何疑问,可以通过[email protected]询问我或在此处发表评论。我将帮助回答所有问题。
回复 删除#错误:C:/Modeltech_5.5e/examples/verilog1.v(2):附近"#": expecting: ';'
回复 删除#错误:C:/Modeltech_5.5e/examples/verilog1.v(49):附近"[": expecting: ';'
#错误:C:/Modeltech_5.5e/examples/verilog1.v(55):附近"]":syntax error
#错误:C:/Modeltech_5.5e/examples/verilog1.v(56):附近"]":syntax error
编译用于读取和处理的模块时出现这些错误。
这篇文章是在FPGA上进行图像处理的教程。没有给出完整的代码,但是提供了用于读写图像的主要部分。请花一些时间来解决这个问题,以便您可以从中学到很多东西。
删除是的,但是我无法理解语法错误在哪里,即使在写模块中它也显示相同的错误,例如"[": expecting: ';',由于上述错误,我不'不知道如何纠正它。
删除这re is also error for parameter in read as well as write module,near "#": expecting: ';'
您需要添加更多代码才能使其正常工作。花一些时间来解决它。
删除这段代码非常有用!你能把完整的代码发给我吗?我的电子邮件是[email protected]
回复 删除非常感谢你!
此代码非常有用。请寄给我。我的电子邮件是[email protected]
回复 删除谢谢!
您可以将完整的Verilog代码发送给我吗?
回复 删除[email protected]
嘿,
回复 删除这 site is very helpful, can you send me the full verilog code to my email.
[email protected]
您能发送完整的Verilog代码吗
回复 删除我的电子邮件是[email protected]
谢谢
有人可以发送完整的Verilog代码。我的电子邮件是[email protected]
回复 删除谢谢。
我叫锡。我是一名学生,正在研究在FPGA上实现的滤波器。 ADmin有一个关于Canny过滤器的项目?帮我 。
回复 删除你能发给我吗?
[email protected]
谢谢你
嗨,您的代码非常有用。
回复 删除你能把完整的代码发给我吗?
谢谢你
电子邮件:[email protected]
你能把完整的代码发给我吗?
回复 删除[email protected]
嗨,您的代码非常有用。
回复 删除你能把完整的代码发给我吗?
谢谢你
电子邮件:[email protected]
您能寄给我FPGA上ASK的完整Verilog代码吗?
回复 删除谢谢你
电子邮件:[email protected]
嘿,您也可以将xilinx的完整Verilog代码发送给我吗?
回复 删除我的电子邮件是[email protected]
感谢您的帮助,谢谢
我正在学习使用fpga进行图像处理的基础知识
回复 删除你能给我发代码吗
这将有很大的帮助
[email protected]
请通过我的电子邮件[email protected]向我发送代码
回复 删除嗨,我想知道"parameter.v" is.
回复 删除太棒了...感谢您在线上传此项目。我是FPGA的新手,正在尝试学习FPGA上的图像处理。这个项目是一个理想的开始。你能在[email protected]上和我分享源代码吗
回复 删除你能给我发密码吗?
回复 删除您可以将完整的Verilog代码发送给我吗?
回复 删除我的电子邮件:[email protected]
谢谢您的帮助。
嗨,您的代码非常有用,我需要进一步了解。
回复 删除你能给我发源代码吗?
电子邮件:[email protected]
您好,我是Xilinx FPGA的项目。
回复 删除目前,我无法在项目代码中输入位图。
如果您共享完整的代码。我的项目将升级。
您能寄给我完整的代码吗?
我的电子邮件地址是[email protected]。
谢谢您的帮助。
您好,我是Xilinx FPGA的项目。
回复 删除目前,我无法在项目代码中输入位图。
如果您共享完整的代码。我的项目将升级。
您能寄给我完整的代码吗?
我的电子邮件地址是[email protected]。
谢谢您的帮助。
你能给我发源代码吗?谢谢
回复 删除电子邮件:[email protected]
嗨,我很高兴获得源代码,非常感谢!
回复 删除巴拉克 [email protected]
嗨,我很高兴获得源代码,非常感谢!
回复 删除巴拉克 [email protected]
嗨,首先,非常感谢您提供这些代码。我已将其用作构建Verilog代码的参考资料,该代码可以反转灰度图像。您在这里使用了$ fopen和$ fwirte之类的系统Verilog函数。当我编译程序时,它指出这些系统功能不可合成。你有同样的问题吗?
回复 删除$ fopen和$ fwrite无法合成。这些用于在PC上写入图像文件以进行验证。
删除你好!你能发送源代码吗
删除[email protected]
你能把完整的代码发给我吗?
回复 删除[email protected]
你能给我发密码吗?
回复 删除您能否分享完整的Verilog代码:[email protected]
回复 删除您能否将完整的Verilog代码共享给[email protected]
回复 删除你好范
回复 删除您能否分享整个项目的代码。对我来说将是巨大的帮助。
我的电子邮件[email protected]
谢谢
蒙祖鲁尔
此评论已被作者删除。
回复 删除请与我分享此页面的代码:
回复 删除我的电子邮件是[email protected]
您好..您的代码似乎对我的项目非常有用。您能将完整的Verilog代码发送给我吗?谢谢..干得好
回复 删除电子邮件:[email protected]
请给我完整的编码吗?因为对于我的fyp而言,这是在FPGA上实现分形图像压缩的非常有用的参考。得到结果后,我可以与您分享完整的编码。我的电子邮件是[email protected]
回复 删除谢谢你 。非常感谢您的帮助。
嗨范
回复 删除这对我很有帮助。您还可以考虑将源代码发送给我。非常感谢你。我的电子邮件是:[email protected]
真挚地,
志明
嗨范
回复 删除这对我很有帮助。您还可以考虑将源代码发送给我。非常感谢你。这是我的电子邮件:[email protected]
真挚地,
志明
能否与我分享这个项目代码,这将是巨大的帮助。
回复 删除我的电子邮件:[email protected]
您能否也将其邮寄给我...完整代码...电子邮件:[email protected]
回复 删除嗨,您的代码很有帮助。
回复 删除您可以将代码发送给我吗?
非常感谢你。
我的电子邮件:[email protected]
这非常有帮助。您能尽快将整个代码发送给我吗?
回复 删除我的邮件ID是[email protected]
先生,请您分享使用Verilog HDL进行图像处理的完整代码
回复 删除电子邮件ID:[email protected]
你好
回复 删除我想使用笔记本电脑中的图像作为testbench的输入。我不知道此的Verilog代码。我的意思是我给出图像的地址(图像保存在笔记本电脑中的位置的地址)并从该图像中使用例如输入。请帮助我。谢谢
嗨,你能把这个项目寄给我吗?谢谢
回复 删除[email protected]
你能寄给我这个项目的完整代码吗
回复 删除我的邮件编号[email protected]
嗨,您的代码在我的Project中非常有用。您能否分享完整的Verilog代码。
回复 删除电子邮件:[email protected]
您好,先生,您能给我发送源代码吗?将会有很大的帮助。谢谢
回复 删除我的电子邮件:[email protected]
范,我无法将代码合成为parameter.v找不到。我该怎么办,您可以向我发送该项目的v文件吗?我是新来的图像处理人员
回复 删除嗨,范,您能为我提供parameter.v文件,因为我在那部分遇到了错误。
回复 删除尊敬的管理员,
回复 删除我感谢这种知识的转移。
请发送给我用于运行此模拟的parameter.v文件和其他受支持的文件。
[email protected]
尊敬的管理员,
回复 删除您能否将整个项目文件发送到此电子邮件:[email protected]
提前致谢。
大家好,由于需求如此之多,我更新了此项目的完整代码。
回复 删除嗨,您的代码对我来说非常有用。请分享项目我的电子邮件:[email protected]
回复 删除谢谢你。
嗨范
回复 删除我在处理图像时遇到麻烦
我可以'看不到正确的输出结果
这是我的电子邮件:[email protected]
如果您看到此评论,可以给我发送电子邮件,以便我告诉更多细节。
非常感谢。
如有任何疑问,请发送电子邮件至[email protected]
删除谁能告诉我如何创建十六进制文件?
回复 删除阅读教程。有一个Matlab代码可以做到这一点。
删除我可以为研究获得完整的Vhdl代码吗? z
回复 删除嗨,这是一个很棒的资源,非常感谢您的分享。我正在尝试在Verilog中构建一个代码,该代码可以读取视频文件并分析光谱数据。如果您分享有关此方面的知识并通过电子邮件将其完整源代码发送给您,这将非常有帮助。我的电子邮件:[email protected]。非常感谢您的帮助,非常感谢!
回复 删除请邮寄完整的代码..我的电子邮件ID为[email protected]
回复 删除请邮寄完整的代码..我的电子邮件ID为[email protected]
回复 删除您好Van Loi Le,代码非常有用。谢谢。能否将完整的Verilog源代码和测试平台发送给我,并附带您在此处使用的图像
回复 删除您能在其他项目中提供帮助吗,我有一个使用verilog进行图像配准的项目
我的电子邮件地址是:[email protected]
你好,范。
回复 删除您能将完整的Verilog源文件发送给我吗?
对我来说将非常有用。
谢谢你。祝你今天过得愉快。
我的电子邮件是:[email protected]
我也有使用Verilog代码进行的项目图像重新注册,您能帮我吗