一种基于FPGA的避免布局延时的灰度直方图统计方法,采用双口block RAM,将端口B读出的灰度像素计数值doutb寄存一拍;当遇到相邻像素点的灰度值相同时,使用cal_pix0和cal_pix1来表示计数值;在端口A将doutb_1d、cal_pix0和cal_pix1相加的结果写入对应的地址中,即为当前像素点灰度值的计数值。本方法中使用的均为时序逻辑,并对BRAM输出的数据寄存了一拍,这样就避免了在布局布线的过程中存在某个过长的路径,均衡了时序,最大可能的避免了在布局布线中出现的时序问题。布局布线中出现的时序问题。布局布线中出现的时序问题。
【技术实现步骤摘要】
一种基于FPGA的避免布局延时的灰度直方图统计方法
[0001]本专利技术涉及图像处理领域,具体涉及一种基于FPGA的避免布局延时的灰度直方图统计方法。
技术介绍
[0002]灰度直方图统计从数学的角度上看就是统计一副图像中各个灰度的像素,得到一张灰度分布表。目前大多数基于FPGA实现的方法就是使用双口block RAM。参照图1,其核心思路为在端口B将灰度像素计数值读出来,图1中,clk为时钟信号,din_vld为输入数据有效信号,din为输入数据信号,addrb为block ram端口B地址信号,doutb为block ram端口B输出数据信号,wea为block ram端口A写使能信号,addra为block ram端口A地址信号,dina为block ram端口A输入数据信号。其在端口A该计数值加一后写回,但是为了保证每次写入时读出的灰度像素计数值对应的是当前的地址,数据的加一和写入使用的是组合逻辑,当工作时钟速率较高的情况下,可能会出现logic delay过大导致的时序问题。
技术实现思路
[0003]针对现有技术的不足,本专利技术提出了一种基于FPGA的避免布局延时的灰度直方图统计方法,该方法主要是在数据的加一和写入时不使用组合逻辑而使用时序逻辑来避免FPGA在布局布线时因路劲过长等造成logic delay过大。
[0004]一种基于FPGA的避免布局延时的灰度直方图统计方法,包括如下步骤:步骤1,采用双口block RAM,选择简单双口RAM模式,在端口A写入当前灰度像素此刻统计的计数值,在端口B读出当前灰度像素之前统计的计数值;步骤2,端口B的addrb的值表示的是当前灰度像素值,根据addrb读出的doutb的值就是当前灰度值之前统计的的计数值,将doutb寄存一拍得到doutb_1d,缩短当前逻辑路径;步骤3,在统计过程中,如果遇到多个连续像素点的灰度值相同时,使用cal_pix0和cal_pix1来辅助表示计数值。当连续两个点或者间隔为1的两个点的灰度值相同时,cal_pix0的值为1。当连续三个点的灰度值相同时,cal_pix0的值为2。当间隔为2的两个点灰度值相同时,cal_pix1的值为2;步骤4,doutb_1d表示的是当前灰度值之前累计统计的的计数值,cal_pix0表示的是连续两个或三个点灰度值相同或间隔为1的两个点灰度值相同的情况的附加计数值,cal_pix1表示的是间隔为2的两个点灰度值相同的情况的附加计数值,将这三个信号相加就是当前灰度值在此刻统计的计数值,将相加的和作为dina的值,写入block RAM中。
[0005]本专利技术达到的有益效果为:(1)本方法中使用的均为时序逻辑,并对BRAM(即block ram)输出的数据寄存了一拍,这样就避免了在布局布线的过程中存在某个过长的路径,均衡了时序,最大可能的避免了在布局布线中出现的时序问题。(2)避免了当工作时钟速率较高的情况下,可能会出现logic delay过大导致的时序问题。(3)在数据的加一和写入时不
使用组合逻辑,而使用时序逻辑来避免FPGA在布局布线时因路劲过长等造成logic delay过大的问题。
附图说明
[0006]图1为本专利技术
技术介绍
中的传统灰度直方图统计时序图。
[0007]图2为本专利技术实施例中的灰度直方图统计方法时序图。
具体实施方式
[0008]下面结合说明书附图对本专利技术的技术方案做进一步的详细说明。
[0009]为了实现上述目的,本专利技术技术方案如下:仍然在端口B将灰度像素计数值读出来,关键点是将端口B读出的灰度像素计数值doutb寄存一拍,如此即可缩短逻辑路径,方便布局布线。当遇到相邻几个像素点的灰度值相同时,使用cal_pix0和cal_pix1来表示不同情况下的计数值,当连续两个像素点灰度值相同或间隔为1的两个像素点的灰度值相同时,cal_pix0为1;当连续三个像素点灰度值相同时,cal_pix0为2;当间隔为2的两个像素点的灰度值相同时,cal_pix1为2。如此,在端口A将doutb_1d+cal_pix0+cal_pix1相加的结果赋值给dina,dina即为当前像素点灰度值的计数值。
[0010]图2为本方法的实施示例,其中,clk为时钟信号,din_vld为输入数据有效信号,din为输入数据信号,addrb为block ram端口B地址信号,doutb为block ram端口B输出数据信号,doubt_1d为doutb寄存一拍的信号,cal_pix0为连续像素统计计数信号,cal_pix1为间隔像素统计计数信号,wea为block ram端口A写使能信号,addra为block ram端口A地址信号,dina为blockram端口A输入数据信号。
[0011]图1和图2中的D0、D1和D2表示的是输入的数据,如data0,data1,data2等。
[0012]doutb中的数字表示的是addrb中表示的地址中存储的数据,如图1中addrb第一个D0出现时doutb中是0,表示的就是当前D0地址中存储的数据是0,其他以此类推。
[0013]dina中的数字表示的是向当前addra表示的地址中写入的数据,如图1中addra第一个D0出现时dina中是1,表示的就是向当前D0地址中写入数据1,其他以此类推。
[0014]doutb_1d是doutb寄存一拍后的信号,即延时一个时钟。
[0015]以上所述仅为本专利技术的较佳实施方式,本专利技术的保护范围并不以上述实施方式为限,但凡本领域普通技术人员根据本专利技术所揭示内容所作的等效修饰或变化,皆应纳入权利要求书中记载的保护范围内。
本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种基于FPGA的避免布局延时的灰度直方图统计方法,其特征在于:所述方法包括如下步骤:步骤1,采用双口block RAM,在端口A写入当前灰度像素此刻统计的计数值,在端口B读出当前灰度像素之前统计的计数值;步骤2,端口B的addrb的值表示的是当前灰度像素值,根据addrb读出的doutb的值是当前灰度值之前累计统计的的计数值,将doutb寄存一拍得到doutb_1d,缩短当前逻辑路径;步骤3,在统计过程中,遇到多个连续像素点的灰度值相同时,使用cal_pix0和cal_pix1来辅助表示计数值,其中cal_pix0表示的是连续两个或三个点灰度值相同或间隔为1的两个点灰度值相同的情况的附加计数值,cal_pix1表示的是间隔为2的两个点灰度值相同的情况的附加计数值;步骤4,通过将doutb_1d、cal_pix0和cal_pix1三个信号相加得到当前灰度值在此刻统计的计数值,将相加的和作为dina的值,写入block RAM中。2. ...
【专利技术属性】
技术研发人员:任智强,肖东树,李圣波,
申请(专利权)人:江苏无右微创医疗科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。