0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用Verilog语言实现CMOS图像敏感器时序驱动电路设计

电子设计 来源:郭婷 作者:电子设计 2019-05-03 10:02 次阅读

CMOS图像敏感器是近年来兴起的一类固态图像传感器。CMOS图像敏感器具有低成本、低功耗(是CCD耗的1/1000~1/100)、简单的数字接口、随机访问、运行简易(单一的CMOS兼容电池供给)、高速率(可大于1000帧/秒)、体积小以及通过片上信号处理电路可以实现智能处理功能等特点而得到广泛应用。有些CMOS图像敏感器具有标准的I2C总线接口,可方便应用到系统中。有些没有这类总线接口电路的专用CMOS图像敏感器需要增加外部驱动电路。由于CMOS敏感器的驱动信号绝大部分是数字信号,因此可采用FPCA通过Verilog HDL语言编程产生驱动时序信号。Verilog HDL语言是IEEE标准的用于逻辑设计的硬件描述语言,具有广泛的逻辑综合工具支持,简洁易于理解。本文就STAR250这款CMOS图像敏感器,给出使用Verilog HDL语言设计的逻辑驱动电路和仿真结果。

1 CMOS图像敏感器STAR250

STAR250是一款专为卫星天文导航的星跟踪器(tracker)设计的CMOS图像敏感器。由于太空中含有大量辐射,芯片中加入了抗辐射电路以提高空间应用的可靠性。STAR250的技术指标如下:

(1)0.5μm CMOS工艺;

(2)512x512分辨率,像素大小25μmx25μm;

(3)每个像素4个光敏二极管,提高MTF(幅值转换功能)和减少PRNU(非均一化光响应);

(4)抗辐射设计;

(5)片上双采样电路抵消FPN(固定模式噪声);

(6)电子快门:

(7)最大30帧/秒;

(8)可以取子窗口;

(9)片上10位ADC

(10)陶瓷JLCC-84针封装。

STAR250是有源像素的线扫描CMOS图像敏感器。所有像素的输出都连接到列总线,并且在列总线上每例都有一个列放大器。使用二次采样技术,控制列放大器可以从读出信号中减去光敏单元上一次采集残留的电荷。片上ADC独立于敏感器,可以使用也可以通过软件关闭,而用外部的ADC。STAR250为了应用方便有多种读出数据的方法(窗口方式、电子快门等),不同的读出方式有不同的时序要求。

传统的计算机或打印机的图像座标系定义左上角为原点(0,0),在STAR250中定义右上角为原点(0,0),如图1。这样敏感器输出数字信号后能够方便地转换为计算机格式的图像,方便后续的处理。窗口扫描方式是从上向下、从左向右一个像素一个像素地扫描。

使用Verilog语言实现CMOS图像敏感器时序驱动电路设计

2 STAR250时序信号

STAR250通过两个步骤完成图像的采集。第一步是逐行扫描RESET像素。行内像素RESET后,本行自上一次RESET或读出后积累的所有光敏电荷被排空。从RESET行像素开始新的曝光周期。第二步是本次曝光周期数据读出。以电压的形式读出,然后经过ADC转换为数字量。由于电荷采用排出式读取,CMOS图像敏感器的像素读出不可恢复,读取过程也相当于RESET像素,所以CMOS敏感器行RESET的速度与读取速度一样。

STAR250通过三个指针标定整个图像地址:Yrd当前扫描行,Yrst当前RESET行,Yrd当前读出像素。这三个指针都有相应的移位寄存器,通过设置这三个寄存器的初始值可以调整采集窗口的大小和位置。图像采集的流程图如图2。

使用Verilog语言实现CMOS图像敏感器时序驱动电路设计

每秒钟的图像帧数通过设置Yrd和Yrst进行控制,曝光周期也由这两个量控制。这个时间量可以用空间距离(行距)表示,定义DelayLines=︱Yrst-Yrd+︱。由于每一行的RESET和读取时间是固定的,所以DelayLines如果固定那么帧率也就固定了。将DelayLines转换成像素的有效积分时间(曝光时间),是将Delay-Lines乘以读取一行像素所用的时间。

读取一行像素所用的时间由四部分组成:(1)行中有效像素的个数(由行的长度定义);(2)读取一个像素所用的时间;(3)像素累积电荷转换为数字量的时间;(4)选择新一行所用的时间。例如在主时钟频率为12MHz时,像素的输出频率为主时钟的二分频6MHz,因此一行像素所需要的时间为512×1/6MHz=85.3μs。再加上换行所需时间,一行像素的读取时间大约90μs左右。因此可以根据这个时间设置DelayLines来控制曝光时间。

3 Verilog HDL驱动时序设计

经过以上分析可知,CMOS图像敏感器采集时可以分为RESET过程和采集过程。时间上两个过程是独立的,如图3。但在FPGA内部处理这两部分的电路物理上是同时存在,因此必须将相应的信号通过置标志位的方法置为有效或无效。

使用Verilog语言实现CMOS图像敏感器时序驱动电路设计

STAR250所需数字驱动信号共28个,其中SELECT信号在正常使用时,直接接PCB板的Vcc。因此需FPGA控制的驱动信号有27个。根据采集过程可以把信号划分为列放大器信号,包括CAL、Reset、Lr、S、R、LdY。这6个信号在每一行的初始化部分都要用到,因此可以编写到一个模块(ColControl)中;模式信号(PaternCtrl)模块用来设置CMOS敏感器的工作模式及初始地址,包括G0、G1、Bitlnvert和Addr[8:0]共12个信号。其中G0、G1用来设计输出的放大倍数,BitInvert用于将输出取反,Addr[8:0]则设置采集的起始地址;行读出信号控制模块(YlCtrl)产生行读出地址的同步信号SyncYl及时钟驱动信号ClkYl;行RESET信号控制模块(YrCtrl)产生行RE-SET地址的同步信号SyncYr及时钟驱动信号ClkYr;像素控制模块(RowCtrl)产生行内像素初始地址的装载信号LdX及同步信号SyncX;行内时钟信号模块(RowClk)产生列内像素的时钟驱动CLKX、ADC驱动时钟信号CLkAdc及输出三态控制信号TriAdc。

系统的输入信号为主时钟CLK、EosX行内像素结尾信号、EosYl帧内行结尾信号、EosYr帧内RESET行结尾信号、芯片的RESET信号。经过这样划分后的模块化Verilog程序就比较易写了。经过顶层模块综合生成的网表如图4。布线仿真时序图如图5,其中时钟信号过于密集变成黑色带状,同样输出时钟CIkX及ClkAdc也是黑色带状。在时序上ClkX与ClkAdc是反相关系,在TriAdc保持低电平时输出有效。所设计的驱动信号仿真波形与理论波形十分符合。这样就完成了STAR250的时序驱动电路设计。

使用Verilog语言实现CMOS图像敏感器时序驱动电路设计

使用Verilog语言实现CMOS图像敏感器时序驱动电路设计

使用Verilog语言设计时序逻辑具有很高的效率。结合CMOS敏感器特性可以方便地开发出驱动时序电路。但必须对CMOS图像敏感器的信号分析准确,正确分离那些独立的信号和共用的信号,用时序逻辑设计驱动信号,用组合逻辑实现不同采集过程时间上的分离。布线延迟是必须考虑的,采用流水线技术可以预测延迟,保证信号的正确性。虽然文中并未给出像素ADC输出的存储电路,但实际上直接使用TriAdc信号作为SRAM的片选,ClaAdc的低电平作为写信号,SRAM的地址在ClkAdc的上升沿增加、下降沿写入。这样就可以完成图像数据的存储。以上Verilog程序在FLEXl0kl0上布线实现。经示波器观察逻辑正确,CMOS敏感器正常工作。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2525

    文章

    48134

    浏览量

    740233
  • CMOS
    +关注

    关注

    58

    文章

    5163

    浏览量

    233388
  • 寄存器
    +关注

    关注

    30

    文章

    5042

    浏览量

    117765
收藏 人收藏

    评论

    相关推荐

    求助:用FPGA中的verilog语言实现BPSK调制!

    最近在做个课题,需要用FPGA中的verilog语言实现BPSK调制,fpga不是很会,望大神指导下,急求代码啊!谢谢
    发表于 03-06 18:12

    verilog语言实现电子钟

    各位大神求救啊用verilog语言实现电子钟
    发表于 05-04 16:37

    微光CMOS图像传感读出电路设计

      当前固体微光器件以EBCCD 及EMCCD 器件为主,随着CMOS 工艺及电路设计技术的发展, 微光CMOS 图像传感的性能在不断提高
    发表于 11-12 15:37

    基于I2C总线的CMOS图像传感接口电路设计

    结论 CMOS 图像传感接口电路的设计模块可以分为寄存文件、主 12C 总线接口和可编程降采样模块 3 部分,经过
    发表于 11-30 11:27

    请问如何使用Verilog硬件描述语言实现AES密码算法?

    如何使用Verilog硬件描述语言实现AES密码算法?
    发表于 04-14 06:29

    如何实现CMOS图像敏感驱动电路设计

    如何实现CMOS图像敏感驱动电路设计
    发表于 04-20 06:59

    求一款基于VerilogHDL的CMOS图像敏感驱动电路设计

    本文就STAR250这款CMOS图像敏感,给出使用Verilog HDL语言设计的逻辑
    发表于 04-23 06:50

    基于Verilog HDL的CMOS图像敏感驱动电路设计

    摘要: 介绍一种用于卫星姿态测量的CMOS图像敏感器--STAR250的时序驱动信号,并使用Verilo
    发表于 06-20 14:30 792次阅读
    基于<b class='flag-5'>Verilog</b> HDL的<b class='flag-5'>CMOS</b><b class='flag-5'>图像</b><b class='flag-5'>敏感</b>器<b class='flag-5'>驱动</b><b class='flag-5'>电路设计</b>

    Verilog HDL语言实现时序逻辑电路

    Verilog HDL语言实现时序逻辑电路Verilog HDL语言中,时序逻辑
    发表于 02-08 11:46 4492次阅读

    使用verilog语言实现数字钟的工程文件合集免费下载

    本文档的主要内容详细介绍的是使用verilog语言实现数字钟的工程文件合集免费下载。
    发表于 03-02 08:00 10次下载
    使用<b class='flag-5'>verilog</b><b class='flag-5'>语言实现</b>数字钟的工程文件合集免费下载

    采用CPLD和VHDL语言实现CMOS APS图像传感器时序控制电路的设计

    CMOS图像传感器是近年来发展十分迅速的一种新型固态图像传感器。它将图像传感器阵列、时序控制电路
    发表于 07-27 18:27 1081次阅读
    采用CPLD和VHDL<b class='flag-5'>语言实现</b><b class='flag-5'>CMOS</b> APS<b class='flag-5'>图像</b>传感器<b class='flag-5'>时序</b>控制<b class='flag-5'>电路</b>的设计

    使用Quartus和VHDL语言实现的LPC时序的工程文件

    本文档的主要内容详细介绍的是使用Quartus和VHDL语言实现的LPC时序的工程文件免费下载。
    发表于 09-18 16:49 20次下载
    使用Quartus和VHDL<b class='flag-5'>语言实现</b>的LPC<b class='flag-5'>时序</b>的工程文件

    如何使用FPGA实现CMOS图像感器驱动电路的设计研究论文

    在分析DAIsA公司的队一G3 COMs面阵传感器驱动时序基础上,设计了sPI模式的寄存器配置电路实现CMOS
    发表于 01-29 16:51 14次下载
    如何使用FPGA<b class='flag-5'>实现</b><b class='flag-5'>CMOS</b><b class='flag-5'>图像</b>感器<b class='flag-5'>驱动</b><b class='flag-5'>电路</b>的设计研究论文

    Verilog复杂时序逻辑电路设计实践

    笔试时也很常见。[例1] 一个简单的状态机设计--序列检测器序列检测器是时序数字电路设计中经典的教学范例,下面我们将用Verilog HDL语言来描述、仿真、并实现它。序列检测器的逻辑
    发表于 12-17 18:28 15次下载
    <b class='flag-5'>Verilog</b>复杂<b class='flag-5'>时序</b>逻辑<b class='flag-5'>电路设计</b>实践

    TFT-LCD电容触摸屏模块(RGB接口)驱动时序设计

    上两篇已经总结和分享了RGB接口TFT-LCD触摸屏的相关内容。本篇使用Verilog语言实现RGB的驱动时序
    的头像 发表于 05-25 12:47 2463次阅读
    TFT-LCD电容触摸屏模块(RGB接口)<b class='flag-5'>驱动</b><b class='flag-5'>时序</b>设计