马上注册,看完整文章,学更多FPGA知识。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
—边缘检测工程:二值化模块代码解析 作者:陈刀刀 本文为明德扬原创文章,转载请注明出处! 二值化模块的功能:该模块将输入进来的数据与二值图像的阈值进行判断,最终输出0或者1。
一、设计架构 该模块的功能对输入的灰度图像做二值化处理。 期望输出波形如下所示: 设value取150,在第一个红色箭头处,当din_vld=1时,din为56大于150,dout输出1,同时dout_vld为1; 在第二个箭头处,当din_vld=1时,din为85小于150,dout输出0,同时dout_vld为1; 在第三个箭头处,当din_vld=1时,din为87小于150,dout输出0,同时dout_vld为1; 其他情况以此类推。
二、信号的意义 信号 | | | | | | | | | | | | | | | | | 输入灰度图像数据有效信号。 1:数据有效; 0:数据无效。 | | | 输入灰度图像数据起始指示信号。 1:数据有效; 0:数据无效。 | | | 输入灰度图像数据结束指示有效信号。 1:数据有效; 0:数据无效。 | | | 输出的二值图像的图像数据,为1位。 设计逻辑:当输入的值比设定阈值大,则输出1;反之则输出0。 | | | 输出二值图像数据的有效信号。 1:数据有效; 0:数据无效。 设计逻辑:与输入的二值图像数据的有效信号同步。 | | | 输出灰度图像数据起始指示信号。 1:数据有效; 0:数据无效。 设计逻辑:与输入的灰度图像数据起始指示信号同步。 | | | 输出灰度图像数据结束指示有效信号。 1:数据有效; 0:数据无效。 设计逻辑:与输入的灰度图像数据结束指示有效信号同步。 |
三、参考代码 下面展出本模块的设计,欢迎进一步交流,如果需要源代码,欢迎与本人联系。 - module gray_bit(
- clk ,
- rst_n ,
- value ,
- din ,
- din_vld ,
- din_sop ,
- din_eop ,
- dout ,
- dout_vld ,
- dout_sop ,
- dout_eop
- );
- input clk ;
- input rst_n ;
- input [7:0] value ;
- input [7:0] din ;
- input din_vld ;
- input din_sop ;
- input din_eop ;
- output dout ;
- output dout_vld;
- output dout_sop;
- output dout_eop;
- reg dout ;
- reg dout_vld;
- reg dout_sop;
- reg dout_eop;
- always @(posedge clk or negedge rst_n)begin
- if(rst_n==1'b0)begin
- dout <= 1'b0;
- end
- else if(din >= value)begin
- dout <= 1'b1;
- end
- else begin
- dout <= 1'b0;
- end
- end
-
- always @(posedge clk or negedge rst_n)begin
- if(rst_n==1'b0)begin
- dout_vld <= 1'b0;
- end
- else begin
- dout_vld <= din_vld;
- end
- end
-
- always @(posedge clk or negedge rst_n)begin
- if(rst_n==1'b0)begin
- dout_sop <= 1'b0;
- end
- else begin
- dout_sop <= din_sop;
- end
- end
-
- always @(posedge clk or negedge rst_n)begin
- if(rst_n==1'b0)begin
- dout_eop <= 1'b0;
- end
- else begin
- dout_eop <= din_eop;
- end
- end
-
-
- end module
复制代码
|