法律状态公告日
法律状态信息
法律状态
2019-11-05
授权
授权
2017-09-29
实质审查的生效 IPC(主分类):G06F12/0855 申请日:20170420
实质审查的生效
2017-09-01
公开
公开
技术领域
本发明属于工业机器视觉领域,具体涉及到一种基于FPGA驱动线阵CCD的高速图像数据采集方法。
背景技术
工业机器视觉系统主要应用于工业控制,产品检测等领域,其主要结构可分为三个部分:图像数据采集,图像识别和系统控制。图像数据采集作为工业机器视觉的基础在整个系统中扮演着至关重要的角色,而提高图像数据的采集速率,以更快的速度获得高质量的图像数据是提高整个视觉系统速率与精度的重要步骤。在传统的技术中,图像数据的采集一般使用以单片或者ARM为核心,使用软件的方式驱动光学成像传感器来实现。由于受到控制器的工作模式及速度的限制,所以图像采集速率存在一定的上限。另外,光学成像原件主要分为CCD和CMOS两种类型,其中CCD传感器成像质量清晰,细腻,更适合工业现场复杂的光学环境。
发明内容
本发明针对现有技术的不足,提出了一种基于FPGA驱动线阵CCD的高速图像采集方法,先通过驱动线阵CCD传感器与AD芯片实现图像数据采集,接着创建FIFO结构实现数据缓存及速度匹配,再通过设计EMIF接口实现图像数据传输。
高速图像数据采集的实现步骤包括:
步骤一:驱动线阵CCD传感器与AD芯片
1-1、根据AD芯片的时序要求将芯片初始化及启动命令置入芯片内部寄存器中使芯片正常工作,要确保此步骤在线阵CCD传感器有效输出之前完成;
1-2、调用PLL宏模块产生200MHz时钟,以此时钟作为整个系统的运行时钟;
1-3、定义周期计数器cnt实现线阵CCD传感器驱动时序的周期循环计数,计数时间为一个完整的CDD驱动时序周期所需要的时间;
1-4、根据线阵CCD传感器的时序要求,以周期计数器cnt的计数时间为准在相应的计数位置产生相应时间的时序信号,并在有效输出位置产生缓存结构FIFO的写入开始信号;
1-5、定义分频计数器D_cnt,在周期计数器记到线阵CCD传感器有效输出时实现时钟分频,得到线阵CCD传感器驱动时钟,AD芯片采样时钟DATACLK以及缓存结构FIFO的写入时钟,分频值=系统时钟/线阵CCD传感器驱动时钟;
1-6、根据周期计数器cnt的计数时间,在相应的计数位置产生AD芯片所需的PBLK、CLOPB信号,以屏蔽线阵CCD传感器的无效输出,并在周期计数器cnt计数到线阵CCD传感器有效输出时,配合分频计数器D_cnt在一个AD芯片采样时钟DATACLK周期间产生AD双关采样信号SHP,SHD;
步骤二:缓存设计及控制实现步骤
2-1、调用FIFO宏模块用于创建缓存结构;
2-2、FIFO控制模块由状态机结构实现,首先定义状态机五个状态IDLE,Write_FIFO,READ_R_FIFO,READ_G_FIFO,READ_B_FIFO,在IDLE状态判断FIFO的写入开始信号,接收到写入开始信号转入Write_FIFO态,否则停留在IDLE状态;IDLE状态输出FIFO的读与写信号为无效,清零信号有效;在Write_FIFO状态判断3个通道FIFO同时写满信号,该信号为有效,转入READ_R_FIFO态,否则停留在Write_FIFO态;Write_FIFO态输出FIFO读信号清零信号无效,写信号有效;在READ_R_FIFO状态判断R通道FIFO读空信号,该信号有效,转入READ_G_FIFO态,否则停留在READ_R_FIFO态,READ_R_FIFO态输出FIFO写信号与清零信号无效,R通道FIFO读信号有效,其余通道无效;在READ_G_FIFO状态判断G通道FIFO读空信号,该信号有效,转入READ_B_FIFO态,否则停留在READ_G_FIFO态;READ_G_FIFO态输出FIFO写信号与清零信号无效,G通道FIFO读信号有效,其余通道无效;在READ_B_FIFO状态判断B通道FIFO读空信号,该信号有效,转入IDLE态,否则停留在READ_B_FIFO态;READ_B_FIFO态输出FIFO写信号与清零信号无效,B通道FIFO读信号有效,其余通道无效;IDLE,Write_FIFO,READ_R_FIFO,READ_G_FIFO,READ_B_FIFO依次表示空闲态、FIFO写入、读R通道FIFO、读G通道FIFO、读B通道FIFO;
步骤三:EMIF通讯接口的实现
3-1、定义双向端口EMA_D,由三态门实现,当dsp读信号RD_EN有效时双向端口EMA_D值为内部数据寄存器data_buf值,否则为高阻态;读信号RD_EN由dsp端信号EMA_CS2、EMA_OE分别取非后再相与得到;
3-2、将读信号RD_EN与上数据传输地址信号EMA_A得到FIFO的读取时钟信号RD_FIFO_CLK;
3-3、当RD_EN信号有效时,根据地址信号EMA_A的数据,将相应的地址上的数据赋给data_buf即赋给输出端口EMA_D;在RD_FIFO_CLK信号作用,一个像素值就由FIFO传输至dsp。
与现有的技术相比,本发明的有益效果是:采用FPGA驱动高速线阵CCD,并用FIFO缓存进行速度匹配,以及高速通讯接口EMIF来与dsp交互数据,大大提高了工业机器视觉系统中前端图像数据采集速度。实验证明,CCD采样频率可达25MHz,采样行频可达5KHz。
附图说明
图1硬件结构示意图;
图2是FIFO控制结构状态转移图。
具体实施方式
一种基于FPGA驱动线阵CCD的高速图像采集方法,通过驱动线阵CCD传感器与AD芯片实现图像数据采集,通过创建FIFO结构实现数据缓存及速度匹配,通过设计EMIF接口实现图像数据传输。
如图1所示:在FPGA内部,线阵CCD传感器与ad芯片驱动时序发生器产生线阵CCD传感器与三路ad芯片驱动时序驱动线阵CCD传感器与三路ad芯片正常工作;R、G、B三路ad芯片将R、G、B三个通道的图像数据传入FPGA内部R、G、B三通道FIFO;FIFO读写控制状态机控制R、G、B三通道FIFO的读写得到图像数据并将图像数据传给EMIF接口;EMIF接收图像数据并将图像数据传给FPGA外部dsp。
一种基于FPGA驱动线阵CCD的高速图像采集方法主要包括驱动线阵CCD传感器以及AD转换芯片的实现步骤,数据缓存实现步骤以及通信接口实现步骤三部分。
高速图像数据采集的实现步骤包括:
步骤一:驱动线阵CCD传感器与AD芯片
①根据AD芯片的时序要求将芯片初始化及启动命令置入芯片内部寄存器中使芯片正常工作,要确保此步骤在线阵CCD传感器有效输出之前完成。
②调用PLL宏模块产生200MHz时钟,以此时钟作为整个系统的运行时钟。
③定义周期计数器cnt实现线阵CCD传感器驱动时序的周期循环计数,计数时间为一个完整的CDD驱动时序周期所需要的时间。
④根据线阵CCD传感器的时序要求,以周期计数器cnt的计数时间为准在相应的计数位置产生相应时间的时序信号,并在有效输出位置产生缓存结构FIFO的写入开始信号。
⑤定义分频计数器D_cnt,在周期计数器记到线阵CCD传感器有效输出时实现时钟分频,得到线阵CCD传感器驱动时钟,AD芯片采样时钟DATACLK以及缓存结构FIFO的写入时钟,分频值=系统时钟/线阵CCD传感器驱动时钟。
⑥根据周期计数器cnt的计数时间,在相应的计数位置产生AD芯片所需的PBLK、CLOPB信号,以屏蔽线阵CCD传感器的无效输出,并在周期计数器cnt计数到线阵CCD传感器有效输出时,配合分频计数器D_cnt在一个AD芯片采样时钟DATACLK周期间产生AD双关采样信号SHP,SHD。
步骤二:缓存设计及控制实现步骤
如图2所示FIFO读写控制状态机实现方法具体如下:
①调用FIFO宏模块用于创建缓存结构。
②FIFO控制模块由状态机结构实现,首先定义状态机五个状态IDLE(空闲态),Write_FIFO(FIFO写入),READ_R_FIFO(读R通道FIFO),
READ_G_FIFO(读G通道FIFO),READ_B_FIFO(读B通道FIFO),在IDLE状态判断FIFO的写入开始信号,接收到写入开始信号转入Write_FIFO态,否则停留在IDLE状态;IDLE状态输出FIFO的读与写信号为无效,清零信号有效;在Write_FIFO状态判断3个通道FIFO同时写满信号,该信号为有效,转入READ_R_FIFO态,否则停留在Write_FIFO态;Write_FIFO态输出FIFO读信号清零信号无效,写信号有效;在READ_R_FIFO状态判断R通道FIFO读空信号,该信号有效,转入READ_G_FIFO态,否则停留在READ_R_FIFO态,READ_R_FIFO态输出FIFO写信号与清零信号无效,R通道FIFO读信号有效,其余通道无效;在READ_G_FIFO状态判断G通道FIFO读空信号,该信号有效,转入
READ_B_FIFO态,否则停留在READ_G_FIFO态;READ_G_FIFO态输出FIFO写信号与清零信号无效,G通道FIFO读信号有效,其余通道无效;在READ_B_FIFO状态判断B通道FIFO读空信号,该信号有效,转入IDLE态,否则停留在READ_B_FIFO态;READ_B_FIFO态输出FIFO写信号与清零信号无效,B通道FIFO读信号有效,其余通道无效。
步骤三:EMIF通讯接口的实现
①定义双向端口EMA_D,由三态门实现,当dsp读信号RD_EN有效时双向端口EMA_D值为内部数据寄存器data_buf值,否则为高阻态。读信号RD_EN由dsp端信号EMA_CS2、EMA_OE分别取非后再相与得到。
②将读信号RD_EN与上数据传输地址信号EMA_A得到FIFO的读取时钟信号RD_FIFO_CLK。
③当RD_EN信号有效时,根据地址信号EMA_A的数据(存放图像数据地址应与址信号EMA_A的数据相一致),将相应的地址上的数据赋给data_buf即赋给输出端口EMA_D;在RD_FIFO_CLK信号作用,一个像素值就由FIFO传输至dsp。
机译: 基于FPGA的高速鼻尺和亚拉尺的FPGA匹配方法
机译: 基于FPGA的高速规则和YARA规则的FPGA匹配装置。
机译: 基于FPGA的高速鼻尺和亚拉尺的FPGA匹配方法