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

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

3天内不再提示

基于EP1C6T144C8芯片的CCD相机采集系统设计

电子设计 来源:郭婷 作者:电子设计 2019-01-09 07:23 次阅读

1引 言

随着数字技术的进步与发展,对于数据传输的高速率性和时实性提出了很高的要求,IEEE1394协议的出现,很好地解决了该问题。IEEE1394又名FireWire,是一种高速串行总线,已经发展了IEEE1394b提供最高达3.2 Gb/s的速率,并将传输距离扩展到100 m。由此可以断定1394必然成为未来的“标准”串行总线。

IEEE1394支持2类事务:等时传输和异步传输。

异步传输(asynchronous transactions)保证数据传输的正确性,但是不保证数据传输的时实性,主要用来传输控制信息和一些对数据的正确性要求很高的数据。一个异步传输由4部分组成:请求数据包、请求确认数据包、响应数据包和响应确认数据包。确认数据包是和请求数据包、响应数据包同步的,当请求数据包和响应数据包发送之后立即就是确认数据包。

异步传输不占据固定的带宽,但能保证节点获得时间上的公平访问,每一个执行异步传输的节点都能在单一的间隔内准确地访问总线。

等时传输(isochronous transactions)对于数据传输的时实性要求很高,而对于数据传输的正确性要求相对较低。等时传输通过一个与等时传输关联的信道号码确定设备,其以固定的时间间隔(125μs)发送数据,所以必须分配固定的总线带宽,有着高于异步传输的优先级,等时传输可用的最大带宽是整个带宽的80%。

根据协议的结构可以将1394协议分成事务层、链路层、物理层、总线管理层。链路层和物理层目前已经由硬件芯片实现。本设计主要针对芯片的应用,因此对协议本身不做太多介绍和研究。

2采集系统硬件设计

根据硬件的特点,设计了基于T1芯片组和FPGA的CCD相机采集系统。系统结构如图1所示。

基于EP1C6T144C8芯片的CCD相机采集系统设计

FPGA选用Altera公司的Cyclone系列器件EP1C6T144C8,可以为CCD相机提供工作所需的驱动时序,同时接收经过A/D转换的CCD输出图像数据。

这里主要介绍1394接口的数据采集,FPGA内部的CCD驱动逻辑暂时不介绍。本设计用于大量的数据的传输,因此使用TSB12LV32的DM端口来输入和输出数据。FPGA与TSB12LV32的DM端口的逻辑电路如图2所示。

基于EP1C6T144C8芯片的CCD相机采集系统设计

FPGA内部采用异步FIFO解决CCD输出数据频率和TSB12LV32采集频率不匹配的问题,写时钟由CCD输出位同步信号提供,写请求信号由FIFO的满状态共同控制;读时钟由TSB12LV32的DMCLK提供,读请求信号由DMRW。当TSB12LV32开始传输数据时,在FIFO的满状态和TSB12LV32的DMDONE引脚控制下,由CCD输出位同步信号将数据写入FIFO;在DMWR的控制下,由DMCLK将FIFO中的数据由DM0~DM7引脚读入TSB12LV32,连接如图2所示。

2.1 MCU软件设计

软件的设计分为2部分:一个是在PC机上开发设备板的驱动程序;另一个是使用设备板上面使用MCU控制和配置PDI1394L40的软件流程。单片的主要负责初始化各个CRF,设置TSB12LV32的工作模式,配置ROM发送ROM,分析包头,构造包头和数据包。配置ROM是设计的重点也是难点,将设备插入PC的1394端口,通过配置ROM,使得PC机识得设备。配置ROM的流程如图3所示。

基于EP1C6T144C8芯片的CCD相机采集系统设计

2.2异步操作

异步发送“自动插入header的异步包发送”为例,介绍如何进行异步发送操作,其流程图如图4所示。

基于EP1C6T144C8芯片的CCD相机采集系统设计

2.3等时操作

等时接收的工作流程图图5所示。

基于EP1C6T144C8芯片的CCD相机采集系统设计

3驱动开发

采用Numega公司的DriverWorks工具开发驱动,该软件对DDK中的函数进行很好的封装。使用DriverWizard可以直接生成驱动程序源代码的框架,只需对其做修改即可。

由于Windows已经提供了总线驱动程序和端口驱动程序,因此只需要开发功能驱动程序即可。DriverWorks将DDK下的1394请求包(IRB)封装成KIrb类,并将总线驱动程序的功能封装在K1394LowerDevice类中,对于等时传输和异步传输也有相应的类对其相应的DDK进行封装。

1394WDM驱动程序使用IRB(请求包)和总线进行通信,IRB被发送到总线驱动,总线驱动将IRB在总线上执行。DriverWorks使用KIrb类迅速创建一个IRB,同时使用K1394LowerDevice::SubmitIrb函数将IRB发送到总线驱动。

4结语

经测试,该系统实现IEEE1394a的传输协议,实现了异步和同步传输。IEEE已经推出1394b标准,1394b的最高速度可以达到3.2 Gb/s,有效传输距离延长到100 m,而且有些公司已经开始推出1394b控制芯片。该系统不但实现了设备端与PC主机之间数据的高速传输,同时还为1394b传输系统的设计和实现提供了有效的铺垫。

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

    关注

    1603

    文章

    21328

    浏览量

    593264
  • 芯片
    +关注

    关注

    447

    文章

    47817

    浏览量

    409192
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16022

    浏览量

    343676
收藏 人收藏

    评论

    相关推荐

    STM8L151C8T6使用ADC采样,发现数据没有规律的乱变是怎么回事?

    芯片型号STM8L151C8T6 使用ADC,内部1.225V参考电压采样,计算电源电压。采样50次,发现数据没有规律的乱变,网上能找到的例子都试过了,甚至库函数中使用到的寄存器也都查看过了,找不到
    发表于 04-25 06:34

    STM32L151C8T6同样的代码,USART1正常,USART2不工作是为什么?

    请教: MCU是STM32L151C8T6。 同样的代码,USART1正常,USART2不工作。 请问,这是为什么 ?
    发表于 04-23 06:03

    从程序STM32L151C8T6移植到STM32F103C8T6需要注意些什么?

    请问从程序STM32L151C8T6移植到STM32F103C8T6需要注意些什么?
    发表于 04-15 06:06

    请问STM32F100C8T6和STM32F100C8T6B有区别吗?

    最近在用STM32F100C8T6,但是市场上有很多STM32F100C8T6B的型号, 有知道这个尾缀带B的和不带B的有啥区别吗? 看丝印都不一样,不知道能否完全替代的?
    发表于 04-10 07:33

    STM32F103C8 UART1, I2C1, CAN冲突问题怎么解决?

    ST芯片型号: STM32F103C8T6 PB7,PB6用于UART1 PB8,PB9用于做CAN. 问题:I2
    发表于 04-08 08:10

    关于STM32L051C8T6芯片LPUART+DMA接收问题求解

    STM32L051C8T6芯片低功耗串口LPUART+DMA。 我用STM32CUBEMX 生成了程序LPUART以及UART2串口+DMA的程序。 重新写了RxCpltCall函数里面有回显功能
    发表于 03-28 07:05

    STM32F103C8T6使用ADC采集电压时,数据几乎始终保持最高值是为什么?

    使用STM32F103C8T6 的PA0引脚为ADC采集脚位,一个10K的电位器输出电压。附上程序AD.c #include \"stm32f10x.h\"// Device
    发表于 03-26 07:06

    STM32F103C8T61K采样率采集的模拟电压在通过USB发送给电脑时丢失了部分数据怎么解决?

    大家好: 我的芯片STM32F103C8T6。 我用定时器产生1K的中断,中断里进行模拟采集并打开USB发生允许。 主程序里USB发送数据并关闭USB发生允许。 电脑上接收数据时有部分
    发表于 03-25 07:59

    stm32f051c8t6的启动文件用在stm32f030c8t6会不会有问题?

    stm32f051c8t6的启动文件用在stm32f030c8t6会不会有问题?stm32f051c8t6.s里有个配置是TSC_IRQHandler与stm32f0xx.s里的TS_IRQHandler,有啥区别
    发表于 03-14 06:02

    CS32F030C8T6工程移植问题

    *附件:V1.0 CS32F030C8T6 2024.03.12.zip 目前想把CS32F030的工程移植一下,遇到编译启动文件报错的问题,不知哪位大佬帮忙看一下是哪里的问题,感谢处理,谢谢!
    发表于 03-12 22:54

    STM32F103C8T6 SPI从机发送数据错误的原因?

    主机用的是STM32F103C8T6,SPI1,从机用的是STM32F051C8T6,SPI2,全双工,数据位为8位,发送的数据本来应该是主机发送0x01,0x02,0x03,从机回复
    发表于 03-11 08:24

    ccd是什么类型的相机

    、应用领域等方面进行详细介绍,以便读者更好地理解和了解CCD相机CCD相机的原理和结构 CCD相机
    的头像 发表于 01-10 15:27 705次阅读

    什么是CCD相机?它和数码相机有哪些优劣?

    什么是CCD相机?它和数码相机有哪些优劣? CCD相机是一种使用电荷耦合器件(CCD)感光器件的
    的头像 发表于 12-11 11:26 1719次阅读

    请问STM8S005C6T6、STM8L051F3P6、STM8L052C6T6这三款芯片有没有可以pin对pin替换的芯片

    各位工程师好请问关于STM8S005C6T6、STM8L051F3P6、STM8L052C6T6这三款芯片有没有可以pin对pin替换的芯片
    发表于 06-16 08:32

    STM32F103C8T6的NRST引脚的系统复位持续时间为什么用10K和104电容(RC=1ms)呢?

    STM32F103C8T6的NRST引脚的系统复位持续时间为20us,为什么用10K和104电容(RC=1ms)呢?
    发表于 05-05 11:03