首页
游戏
影视
直播
广播
听书
音乐
图片
更多
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的云盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的音乐
我的影视
我的邮件
Search
1
科普:Memory Compiler生成的Register file和SRAM有何区别?
90 阅读
2
在IC617中进行xa+vcs数模混仿
88 阅读
3
virtuoso和empyrean alps模拟仿真和混仿教程
87 阅读
4
vcs debug rtl或者netlist 中的loop
54 阅读
5
文档内容搜索哪家强? 15款文件搜索软件横向评测
42 阅读
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
登录
Search
标签搜索
python
Docker
vcs
PyQT
STM32
cadence
linux
systemverilog
EDA
Alist
vscode
uos
package
MCU
C
QT
CXL
sed
sv
webdav
bennyhe
累计撰写
344
篇文章
累计收到
31
条评论
首页
栏目
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
页面
游戏
影视
直播
广播
听书
音乐
图片
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的云盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的音乐
我的影视
我的邮件
搜索到
344
篇与
的结果
2025-07-14
YUV标准 (2008-06-10 14:46:22)
Sensor出来的YUV数据是有固定的格式的,例如YUYV、YVYU、UYVY、VYUY,根据这些格式就可以分离它们得到Y、U、V分量。例如,如果出来的数据是YUYV格式的话,那么,数据buffer中的第一个字节就是第一个象素的Y值,第二个字节就是第一个象素和第二个象素的U值,第三个字节就是第二个象素的Y值,第四个字节就是第一个和第二个象素的V值,第五个字节就是第三个象素的Y值,。。。依次类推。YUV 4:2:2 每个色差信道的抽样率是亮度信道的一半,所以水平方向的色度抽样率只是4:4:4的一半。对非压缩的8比特量化的图像来说,每个由两个水平方向相邻的像素组成的宏像素需要占用4字节内存。 下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3] ------1存放的码流为: Y0 U0 Y1 V1 Y2 U2 Y3 V3 ------2映射出像素点为:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3] ----3这个是我在网上看到的,现在存到ram中的是第3种形式么?如果是第3种,那么第一个字节是Y0,第2个字节是U0+V1,即各4位,这样理解对不对?YUV开放分类: 网络、计算机、手机、色彩学、影像学目录? 概述? 优点作用? YUV主要的采样格式? 各种YUV格式(图)概述 YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。其中的Y,U,V几个字母不是英文单词的组合词,Y代表亮度,uv代表色差,u和v是构成彩色的两个分量。在现代彩色电视系统中,通常采用三管彩色摄影机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YUV色彩空间表示。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有 Y信号分量而没有U、V信号分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的相容问题,使黑白电视机也能接收彩色电视信号。优点作用 YUV主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和CB来表示。其中,Cr反映了GB输入信号红色部分与RGB信号亮度值之间的差异。而CB反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异。 采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。 YUV与RGB相互转换的公式如下(RGB取值范围均为0-255)︰ Y = 0.299R + 0.587G + 0.114B U = -0.147R - 0.289G + 0.436B V = 0.615R - 0.515G - 0.100B R = Y + 1.14V G = Y - 0.39U - 0.58V B = Y + 2.03U 在DirectShow中,常见的RGB格式有RGB1、RGB4、RGB8、RGB565、RGB555、RGB24、RGB32、ARGB32等;常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等。 YUV主要的采样格式 主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 8bit 的亮度值(也就是Y值),每 2x2 个点保存一个 Cr 和Cb 值, 图像在肉眼中的感觉不会起太大的变化。所以, 原来用 RGB(R,G,B 都是 8bit unsigned) 模型, 4 个点需要 8x3=24 bites(如下图第一个图)。而现在仅需要 8+(8/4)+(8/4)=12bites, 平均每个点占12bites(如下图第二个图)。这样就把图像的数据压缩了一半。 上边仅给出了理论上的示例,在实际数据存储中是有可能是不同的,下面给出几种具体的存储形式: (1) YUV 4:4:4 YUV三个信道的抽样率相同,因此在生成的图像里,每个象素的三个分量信息完整(每个分量通常8比特),经过8比特量化之后,未经压缩的每个像素占用3个字节。 下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3] 存放的码流为: Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3 (2) YUV 4:2:2 每个色差信道的抽样率是亮度信道的一半,所以水平方向的色度抽样率只是4:4:4的一半。对非压缩的8比特量化的图像来说,每个由两个水平方向相邻的像素组成的宏像素需要占用4字节内存。 下面的四个像素为:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3] 存放的码流为:Y0 U0 Y1 V1 Y2 U2 Y3 V3 映射出像素点为:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3] (3) YUV 4:1:1 4:1:1的色度抽样,是在水平方向上对色度进行4:1抽样。对于低端用户和消费类产品这仍然是可以接受的。对非压缩的8比特量化的视频来说,每个由4个水平方向相邻的像素组成的宏像素需要占用6字节内存。 下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3] 存放的码流为: Y0 U0 Y1 Y2 V2 Y3 映射出像素点为:[Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2] (4)YUV4:2:0 4:2:0并不意味着只有Y,Cb而没有Cr分量。它指得是对每行扫描线来说,只有一种色度分量以2:1的抽样率存储。相邻的扫描行存储不同的色度分量,也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0...以此类推。对每个色度分量来说,水平方向和竖直方向的抽样率都是2:1,所以可以说色度的抽样率是4:1。对非压缩的8比特量化的视频来说,每个由2x2个2行2列相邻的像素组成的宏像素需要占用6字节内存。 下面八个像素为:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3] [Y5 U5 V5] [Y6 U6 V6] [Y7U7 V7] [Y8 U8 V8] 存放的码流为:Y0 U0 Y1 Y2 U2 Y3 Y5 V5 Y6 Y7 V7 Y8 映射出的像素点为:[Y0 U0 V5] [Y1 U0 V5] [Y2 U2 V7] [Y3 U2 V7] [Y5 U0 V5] [Y6 U0 V5] [Y7U2 V7] [Y8 U2 V7] 各种YUV格式(图) YUV格式通常有两大类:打包(packed)格式和平面(planar)格式。前者将YUV分量存放在同一个数组中,通常是几个相邻的像素组成一个宏像素(macro-pixel);而后者使用三个数组分开存放YUV三个分量,就像是一个三维平面一样。表2.3中的YUY2到Y211都是打包格式,而IF09到YVU9都是平面格式。(注意:在介绍各种具体格式时,YUV各分量都会带有下标,如Y0、U0、V0表示第一个像素的YUV分量,Y1、U1、V1表示第二个像素的YUV分量,以此类推。) ¨ YUY2(和YUYV)格式为每个像素保留Y分量,而UV分量在水平方向上每两个像素采样一次。一个宏像素为4个字节,实际表示2个像素。(4:2:2的意思为一个宏像素中有4个Y分量、2个U分量和2个V分量。)图像数据中YUV分量排列顺序如下: Y0 U0 Y1 V0 Y2 U2 Y3 V2 … ¨ YVYU格式跟YUY2类似,只是图像数据中YUV分量的排列顺序有所不同: Y0 V0 Y1 U0 Y2 V2 Y3 U2 … ¨ UYVY格式跟YUY2类似,只是图像数据中YUV分量的排列顺序有所不同: U0 Y0 V0 Y1 U2 Y2 V2 Y3 … ¨ AYUV格式带有一个Alpha通道,并且为每个像素都提取YUV分量,图像数据格式如下: A0 Y0 U0 V0 A1 Y1 U1 V1 … ¨ Y41P(和Y411)格式为每个像素保留Y分量,而UV分量在水平方向上每4个像素采样一次。一个宏像素为12个字节,实际表示8个像素。图像数据中YUV分量排列顺序如下: U0 Y0 V0 Y1 U4 Y2 V4 Y3 Y4 Y5 Y6 Y8 … ¨ Y211格式在水平方向上Y分量每2个像素采样一次,而UV分量每4个像素采样一次。一个宏像素为4个字节,实际表示4个像素。图像数据中YUV分量排列顺序如下: Y0 U0 Y2 V0 Y4 U4 Y6 V4 … ¨ YVU9格式为每个像素都提取Y分量,而在UV分量的提取时,首先将图像分成若干个4 x 4的宏块,然后每个宏块提取一个U分量和一个V分量。图像数据存储时,首先是整幅图像的Y分量数组,然后就跟着U分量数组,以及V分量数组。IF09格式与YVU9类似。 ¨ IYUV格式为每个像素都提取Y分量,而在UV分量的提取时,首先将图像分成若干个2 x 2的宏块,然后每个宏块提取一个U分量和一个V分量。YV12格式与IYUV类似。 ¨ YUV411、YUV420格式多见于DV数据中,前者用于NTSC制,后者用于PAL制。YUV411为每个像素都提取Y分量,而UV分量在水平方向上每4个像素采样一次。YUV420并非V分量采样为0,而是跟YUV411相比,在水平方向上提高一倍色差采样频率,在垂直方向上以U/V间隔的方式减小一半色差采样,如上图所示。
2025年07月14日
3 阅读
0 评论
0 点赞
2025-07-14
SAA7114初始化 (2008-06-10 14:45:11)
请问各位SAA7114的设计师,我先写整个寄存器,然后0X88的bit5置1,然后置0,然后再置1,IPD和HPD怎么还是没有输出呢?急啊,帮帮忙!!!write_N_byte(0x42,0x00,saa7114_init_data,0xf0); //全部初始化寄存器 write_ONE_byte(0x42,0x88,0xfd); //0X88的bit5置1write_ONE_byte(0x42,0x88,0xdd); //0X88的bit5置0write_ONE_byte(0x42,0x88,0xfd); //0X88的bit5置1SAA7114的参考寄存器设置以下内容只有回复后才可以浏览给你参考:0x4201=0x080x4202=0xc40x4203=0x100x4204=0x900x4205=0x900x4206=0xeb0x4207=0xe00x4208=0xb80x4209=0x420x420a=0x800x420b=0x440x420c=0x420x420d=0x000x420e=0x810x420f=0x2a0x4210=0x000x4211=0x420x4212=0x8f0x4213=0x910x4214=0x040x4215=0x110x4216=0xfe0x4217=0xc00x4218=0x420x4219=0x800x421a=0x000x421b=0x000x421c=0x000x421d=0x000x421e=0x000x421f=0xXX0x4230=0xbc0x4231=0xdf0x4232=0x020x4234=0xcd0x4235=0xcc0x4236=0x3a0x4238=0x030x4239=0x200x423a=0x000x4240=0x000x4241=0x000x4242=0x000x4243=0x000x4244=0x000x4245=0x000x4246=0x000x4247=0x000x4248=0x000x4249=0x000x424a=0x000x424b=0x000x424c=0x000x424d=0x000x424e=0x000x424f=0x000x4250=0x000x4251=0x000x4252=0x000x4253=0x000x4254=0x000x4255=0x000x4256=0x000x4257=0xff0x4258=0x000x4259=0x000x425a=0x070x425b=0x000x425c=0x000x425d=0x000x425e=0x000x425f=0x000x4280=0x100x4281=0x000x4282=0x000x4283=0x000x4284=0x000x4285=0x000x4286=0x450x4287=0x010x4288=0xf00x428f=0xXX0x4290=0x420x4291=0x080x4292=0x100x4293=0x800x4294=0x000x4295=0x000x4296=0xca0x4297=0x020x4298=0x100x4299=0x000x429a=0x2e0x429b=0x010x429c=0xb40x429d=0x000x429e=0x200x429f=0x010x42a0=0x040x42a1=0x000x42a2=0xf20x42a4=0x800x42a5=0x2f0x42a6=0x2f0x42a8=0x000x42a9=0x040x42aa=0x1f0x42ac=0x000x42ad=0x020x42ae=0x000x42b0=0xa00x42b1=0x0e0x42b2=0xa00x42b3=0x0e0x42b4=0x010x42b8=0x100x42b9=0x3a0x42ba=0x2a0x42bb=0x000x42bc=0x100x42bd=0x3a0x42be=0x2a0x42bf=0x000x42c0=0x000x42c1=0x080x42c2=0x100x42c3=0x810x42c4=0x100x42c5=0x000x42c6=0xd00x42c7=0x020x42c8=0x0a0x42c9=0x000x42ca=0x200x42cb=0x010x42cc=0xd00x42cd=0x020x42ce=0x200x42cf=0x010x42d0=0x010x42d1=0x000x42d2=0x000x42d4=0x800x42d5=0x420x42d6=0x420x42d8=0x000x42d9=0x040x42da=0x000x42dc=0x000x42dd=0x020x42de=0x000x42e0=0x000x42e1=0x040x42e2=0x000x42e3=0x040x42e4=0x000x42e8=0x000x42e9=0x000x42ea=0x000x42eb=0x000x42ec=0x000x42ed=0x000x42ee=0x000x42ef=0x00
2025年07月14日
6 阅读
0 评论
0 点赞
2025-07-14
SAA7111与DM642的接口问题解答 (2008-06-10 12:42:44)
SAA7111与DM642的接口问题解答问:请教大家:灰度图像处理中A/D转换部分大家用什么片子?CCD模拟信号出来是CCIR标准的,如果用简单的A/D片子那还要加上分离同步信号的片子,是否有适合灰度图像处理的解码芯片?菲利普的SAA7111好像很常用,但在处理灰度图像时输出的16根线需要怎样配置呢?如果配置成YUV(4:2:2)(16bit)格式的话,是否高8位代表的就是亮度,只需将高8位线的数据作处理就行了呢?数据手册说明是这样:The higher output signals VPO15 to VPO8 in the YUV format perform the digital luminance signal.望大家指教!如果只用8根输出线的解码芯片,那YUV(4:2:2)的格式的亮度信号Y不就不能代表255个灰度级了吗?很迷惑!我现在想用TMS320DM642对数据作处理,应该接在视频端口的哪些线呢?答:当用8根线时,Y和UV是交替的,Y值照样可达255.
2025年07月14日
3 阅读
0 评论
0 点赞
2025-07-14
PCI总线和DSP芯片的图像处理平台的硬件设计 (2008-06-10 12:41:37)
PCI总线和DSP芯片的图像处理平台的硬件设计来源:电子技术应用 作者:杭州浙江大学电气工程学院 孔祥刚 诸 静摘要:介绍了基于PCI专用芯片S5933和DSP芯片TMS320C32图像处理平台的硬件设计。该平台使用专用视频输入处理芯片SAA7113和CPLD实现了高速连续的视频帧采集,满足了后继图像处理的需要。该平台既可以作为视频图像采集使用,也可以进行视频压缩、匹配等图像处理的算法验证,并具有使用灵活的特点。 关键词:数字信号处理芯片 视频采集 图像处理随着计算机、多媒体和数据通信技术的高速发展,数字图像技术近年来得到了极大的重视和长足的发展,并在科学研究、工业生产、医疗卫生、教育、娱乐、管理和通信等方面取得了广泛的应用。同时,人们对计算机视频应用的要求也越来越高,从而使得高速、便捷、智能化的高性能数字图像处理设备成为未来视频设备的发展方向,这必然要求产生相适应的新理论、新方法和新算法。为了在利用这些新技术的过程中检验其可行性,研制了基于PCI总线和DSP芯片的图像处理平台,该图像处理平台是利用PHILIPS公司的视频输入处理器SAA7113、TI公司的TMS320C32高速浮点DSP和AMCC公司的S5933 PCI总线接口芯片搭建的。利用高速的PCI总线和功能强大的DSP芯片,可以进行视频压缩、图像检测、视觉定位等算法研究。1 系统功能概述根据实际应用需要,该系统的主要功能有:(1)可以在不同输入制式PAL和NTSC之间进行自动切换和处理。(2)能利用采集到的YUV图像信号数据进行压缩算法的验证,或转换成灰度图像数据、RGB格式图像数据等进行检测、定位等算法的检验。(3)能将处理后的数据通过PCI接口交给上层系统(PC机)保存或进行进一步验证处理。(4)系统具有软件修改、升级功能和灵活性,便于算法的改进验证。系统的设计难点主要是如何实现系统数据的高速传输。图像数据由专用集成视频解码器SAA7113采集,经A/D转换处理后传输到DSP;再经DSP处理后通过PCI接口传输到PC机。如何实现SAA7113与DSP之间和DSP与S5933之间的高效率数据通信是解决这个问题的关键。通过分析研究,在SAA7113与DSP之间采用CPLD控制的两帧轮换方式,实现图像的隔行信号变逐行信号以及采集和处理的同步进行;在DSP与S5933之间采用DMA传输方式,实现数据流在系统中的高速传输,以满足图像处理要求。2 系统的硬件设计整个系统由视频解码器、DSP和PCI总线专用芯片组成。系统框图如图1所示。DSP芯片采用TMS320C32,该芯片是在TMS320C30的基础上简化而来的,含有TMS320C30 CPU核心。它增加了一些常用的功能部件,使程序引导功能、串行接口传输和存储器均可支持8、16、32位的数据。它可产生边沿中断和电平中断,可由用户编程设定中断向量表的地址,具有空等待和低功耗两种电源管理方式。它具有两个DMA通道,功能强大的外部存储器接口既可以满足视频解码接口8位数据的要求,也可以实现PCI接口32位数据的的高速数据传输。TMS320C32灵活的程序加载可以实现在系统编程。PCI总线专用接口芯片采用S5933,它是一种功能强且使用灵活的PCI总线控制器专用芯片,该芯片符合PCI局部总线规范2.1版本,既可作为PCI总线目标设备,实现基本的传送要求;也可作为PCI总线主控设备,访问其它PCI总线设备。S5933的峰值传送速率为132Mbps(32位PCI数据线)。S5933提供了3个物理总线接口:PCI总线接口、外加总线接口(ADD-ON BUS);可选的NV存储器接口。用户可根据需要设计S5933与外加总线接口相连接的逻辑电路和配置空间的初始化,而不必考虑PCI总线规范众多的协议,从而将复杂的PCI总线接口关系转化为简单的8/16/32位外加总线(ADD-ON BUS)接口关系。S5933芯片功能框图如图2所示。 PCI总线与外加总线之间的数据传输可以通过内部先入先出存储器(FIFO)、邮箱寄存器(Mailbox)和数据直传通道(Pass-Thru)三种通道进行。各通道都包括两组寄存器以分别完成PCI总线和ADD-ON总线接口双向数据传输,为使用者提供较为宽松而灵活的设计空间。可编程视频解码芯片采用SAA7113;该芯片是可编程视频处理芯片,采用CMOS工艺。通过简单的I2C总线可以对其实现编程控制;内部包含两路模拟处理通道,能实现视频源的选择、抗混叠(去假频)滤波、模/数变换、自动嵌位、自动增益控制、时钟产生、多制式(PAL BGHI、PAL M、PAL N、NTSC M和NTSC N)解码及亮度、对比度和饱和度控制。本系统采用软件模拟I2C总线的控制方式,通过DSP的多功能口实现DSP对SAA7113的初始化等控制;根据SAA7113输出的同步脉冲,通过使用可编程器件CPLD,产生图像帧存储器的地址信号、读写信号以及帧切换等控制信号,实现SAA7113和DSP之间的高速数据通讯。3 DSP与SAA7113之间的无缝连接SAA7113输出的是隔行视频信号,一帧图像需要传送两次,分别记为奇场图像和偶场图像;视频处理的对象是逐行排列的图像信号,因此必须等待一帧图像(连续的奇、偶两场信号)采集完后,合成到一个图像帧中才能进行后续处理。利用SAA7113的同步信号,使用可编程逻辑器件CPLD构建控制器,可将图像数据写入帧存储器,解决图像帧合成问题。为了向前端处理器(DSP)提供连续的图像信号,采用两个图像帧存储器A和B交替存储的方式,来暂存采集到的图像数据和需要处理的图像数据,可实现图像的实时连续采集处理。DSP与SAA7113之间的硬件接口如图3所示,整个接口的控制逻辑,包括两个子模块:帧图像写入控制器和乒乓开关,由一块CPLD来完成。CPLD芯片采用ALTERA公司的EPM9320RC208。两组帧存储器A和B采用CYPRESS公司生产的两块CY7C1049芯片,容量为512K×8bit,存取时间不超过15ns,能满足图像实时采集要求。 SAA7113由数字视频输出口VPO7:0,输出视频数据。系统设置SAA7113的输出数据为标准的ITU 656 4:2:2 YUV格式,每一个象素的数据由两个连续的字节表示。为了方便地存储处理图像,系统仅取一帧图像中间的512×512个象素作为一帧,即所取图像帧为连续奇偶两场图像的中央512行,且每行取中间的512个象素的图像块。利用SAA7113的同步信号,帧图像写入控制器模块产生帧存储器的地址信号、写信号以及帧切换信号之一(RDY1)。SAA7113输出的同步信号包括LLC、RTS0、RTS1。LLC是行锁定系统时钟输出,为象素时钟频率的两倍,即27MHz,用来同步数据采集,使得一个LLC周期输出一个字节的图像数据。在图像数据有效时,其上升沿反相后作为帧存储器的WE#信号。RTS0、RTS1的功能是通过编程设置SAA7113功能寄存器确定的。RTS0被设置为水平输出参考信号(行有效信号),RTS0高电平时表示采集一行有效象素,低电平时表示场消隐信号?熏在RTSO上升沿后,帧图像写入控制器控制采集一行中间的512个象素数据,将其余的象素数据丢弃。RTS1被设置为垂直输出参考信号和奇偶场信号,RTS1高电平时表示采集奇场图像所需要的有效数据,在RTS1上升沿时,开始采集奇场图像数据,同时它也被用来作为帧图像开始的信号;RTS1低电平时表示采集偶场中所需要的图像数据,在RTS1下降沿时,开始采集偶场图像数据。在RTS1上升沿时,帧图像写入控制器控制采集256行象素数据作为奇场图像;在RTS1下降沿时,顺次采集下面的256行象素数据作为偶场图像,其余的图像行数据丢弃。使用512K×8bit的静态存储器(SRAM),恰好可以存放一帧512×512×2×8bit的图像。在合成一帧图像时,对应的奇场图像的第n个象素和偶场图像的第n个象素在存储器内位置相差512×2×8bit,帧图像写入控制器通过把RTS1(奇偶场有效)信号作为写入图像数据的帧存储器地址信号中的A1,把场中有效行的计数输出信号作为帧存储器地址信号中的A1[18:12],把行中有效象素的计数输出信号作为帧存储器地址信号中的A1[10:0],从而实现隔行信号变逐行信号存储在一图像帧存储器中。图4为图像采集同步信号时序图。当采集完一帧图像数据时,帧图像写入控制器产生RDY1信号,通知乒乓开关。在CPLD内部构造一个乒乓开关控制模块,自动完成帧间读写两个通道接口的切换。其中帧图像写入控制器产生的写图像帧的地址信号A1[18:0]、写控制信号WR#和SAA7113的VPO[7:0]组成了图像帧写通道的始端接口;DSP读图像帧的地址线信号A2[18:0]、读控制信号R/W#和数据线的低8位信号DI[7:0]组成了图像帧读通道的终端接口;RDY1、RDY2(FX0)作为帧切换就绪信号触发通道的切换。开始采集图像数据时,帧切换就绪信号RDY1、RDY2同时为假,图像帧写通道的始端接口信号与图像帧A的接口信号RD、WE#、A[18:0]和D[7:0]连接;SAA7113的当前帧图像数据写入帧存储器A;同时,图像帧读通道的终端接口与图像帧B的接口信号连接,DSP从帧B中取出前一帧图像数据进行处理;当前帧的图像数据采集完时,帧图像写入控制器停止采集数据,置RDY1为真;同理,当DSP在处理完前一帧图像时,设置引脚FXO置RDY2为真。乒乓开关模块在检测到RDY1、RDY2同时为真时,切换通道的接口,此时图像帧写通道的始端接口与图像帧B的接口连接;SAA7113的当前帧图像数据写入帧存储器B;图像帧读通道的终端接口与图像帧存储器A的接口信号连接,DSP从帧存储器A中取出前一帧图像数据进行处理。这样两帧轮换进行,实现了图像的实时连续处理。在DSP和SAA7113之间所有控制信号的接口逻辑和时序转换都由CPLD来完成,增加了可靠性,简化了PCB的版面,并且可以编程修改,提高了使用的灵活性。4 S5933与DSP之间的接口设计S5933的三种数据传输方式有不同的特点,应用于不同的场合。S5933信箱方式不支持猝发(Burst)传输,由8个32位信箱寄存器组成,可从两个方向进行访问。它们平均分为两类,分别用于PCI接口和ADD-ON接口之间的双向信息传输。主机和扩展逻辑都可以通过查询或中断方式获悉任一信箱寄存器的任一字节的空满状态,并通过相应地址访问该字节。S5933的信箱寄存器映射在DSP的I/O空间中,从而可以实现DSP对信箱的直接操作,数据速率较低,故系统中只使用这种方式传输命令和状态信息,例如PC机通知DSP设备关闭;DSP通知上层已经传送完数据(处理完的数据的大小不是固定的)等。S5933的FIFO方式主要由两个接口共用的两个32×8比特的FIFO、读或写地址寄存器以及读或写计数器组成。两个FIFO分别作为PCI和ADD-ON接口之间的双向缓冲区。S5933提供了快捷方式:一组专门用于FIFO方式传输的控制及状态信号,包括FIFO寄存器的直接读、写以及状态信号等,用以提高数据传输速度,但此信号组只能工作在S5933为主控设备的情况下。S5933作为目标设备时,内部FIFO只是作为一般的寄存器,PCI总线如同访问信箱寄存器那样访问它们,操作比较直观,但不支持猝发传输,极大地限制了传输速度;S5933作为主控设备时,FIFO方式可进行DMA方式的猝发传输,S5933可以通过FIFO接口启动DMA传输周期,传输过程不需要CPU的干预,传输的速率与外部设备的数据传输速率有关,可以得到很高的数据传输速率。S5933的DMA数据传输启动方式有两种:PCI总线接口启动和ADD-ON总线接口启动。启动方式决定于由哪个接口设置读或写地址寄存器以及读或写计数器:PCI总线接口启动方式是由PCI总线主设备(一般是PC机的客户程序)设置DMA相关寄存器发起DMA传输的;ADD-ON总线接口启动方式是由外部逻辑电路(一般是外部插卡上的CPU)设置DMA相关寄存器发起DMA传输的。S5933的PASS-THRU方式使主机以内存映射方式访问ADD-ON接口的存储空间,只能工作在S5933是目标设备的情况下,且外部接口需要逻辑电路的支持,故不常用。本系统是图像处理的一个实验平台,既要求数据传输率高,又要求有一定的升级功能和灵活性。因此,系统采用FIFO数据传输方式。当采集的图像数据量大且要求传输速度高时,可以采用FIFO方式中的PCI总线接口启动DMA方式,使用DMA传输;有一些应用场合,要传送的数据个数不明确,例如图像压缩后的数据量是不一定的,可以使用外加总线接口启动DMA的传输方式传送压缩图像,而用信箱方式传送命令和图像状态信息。在这种方式下,S5933的外加总线操作寄存器全部映射在TMS320C32 DSP的选通控制信号IOSTRB#控制的空间中,使DSP对PCI接口传输的数据的控制十分简单,就象操作自身的外围接口一样。S5933与DSP之间的硬件接口的具体连接方式如图5所示。 S5933和DSP之间的硬件连接,就是利用DSP的读写信号R/W#、地址选通控制信号IOSTRB#、外部设备就绪信号RDY#和部分地址信号以及S5933的FIFO状态信号WRFULL进行简单的时序和逻辑组合,生成对S5933的外加总线接口的读写控制信号:WR#、RD#、SELECT#、ADR[6:2]、BE[3:0]、WRFIFO#。S5933的数据总线与DSP的数据总线相连接,数据线宽度为32位,以便提供尽可能高的传输速率。本文采用PCI接口芯片S5933、DSP芯片TMS320C32和视频输入处理芯片SAA7113设计实现的视频图像处理实验平台系统可以实现图像的高速连续采集,进行图像压缩、图像处理等算法的验证,达到了系统设计的目标。本系统具有使用灵活、升级方便等特点。考虑到DSP芯片的内部RAM有限,程序不能完全在片内运行,在进行一些复杂的图像处理运算时,速度会受到限制,故本系统仅适用于静态图像的处理算法研究。 分享:
2025年07月14日
14 阅读
0 评论
0 点赞
2025-07-14
I2C总线以及初始化 (2008-06-10 12:40:04)
随着大规模集成电路技术的发展,把CPU和一个单独工作系统所必需的ROM、RAM、I/O端口、A/D、D/A等外围电路集成在一个单片内而制成的单片机或微控制器愈来愈方便。目前,世界上许多公司生产单片机,品种很多。其中包括各种字长的CPU,各种容量的ROM、RAM以及功能各异的I/O接口电路等等,但是,单片机的品种规格仍然有限,所以只能选用某种单片机来进行扩展。扩展的方法有两种:一种是并行总线,另一种是串行总线。由于串行总线的连线少,结构简单,往往不用专门的母板和插座而直接用导线连接各个设备。因此,采用串行线可大大简化系统的硬件设计。PHILIPS公司早在十几年前就推出了I2C串行总线,利用该总线可实现多主机系统所需的裁决和高低速设备同步等功能。因此,这是一种高性能的串行总线。 1 I2C总线的硬件结构 I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。典型的I2C总线结构如图1所示。 为了避免总线信号的混乱,要求各设备连接到总线的输出端时必须是开漏输出或集电极开路输出。设备与总线的接口电路如图2所示。设备上的串行数据线SDA接口电路应该是双向的,输出电路用于向总线上发送数据,输入电路用于接收总线上的数据。而串行时钟线也应是双向的,作为控制总线数据传送的主机,一方面要通过SCL输出电路发送时钟信号,另一方面还要检测总线上的SCL电平,以决定什么时候发送下一个时钟脉冲电平;作为接受主机命令的从机,要按总线上的SCL信号发出或接收SDA上的信号,也可以向SCL线发出低电平信号以延长总线时钟信号周期。总线空闲时,因各设备都是开漏输出,上拉电阻Rp使SDA和SCL线都保持高电平。任一设备输出的低电平都将使相应的总线信号线变低,也就是说:各设备的SDA是“与”关系,SCL也是“与”关系。 总线对设备接口电路的制造工艺和电平都没有特殊的要求(NMOS、CMOS都可以兼容)。在I2C总线上的数据传送率可高达每秒十万位,高速方式时在每秒四十万位以上。另外,总线上允许连接的设备数以其电容量不超过400pF为限。 总线的运行(数据传输)由主机控制。所谓主机是指启动数据的传送(发出启动信号)、发出时钟信号以及传送结束时发出停止信号的设备,通常主机都是微处理器。被主机寻访的设备称为从机。为了进行通讯,每个接到I2C总线的设备都有一个唯一的地址,以便于主机寻访。主机和从机的数据传送,可以由主机发送数据到从机,也可以由从机发到主机。凡是发送数据到总线的设备称为发送器,从总线上接收数据的设备被称为接受器。 I2C总线上允许连接多个微处理器以及各种外围设备,如存储器、LED及LCD驱动器、A/D及D/A转换器等。为了保证数据可靠地传送,任一时刻总线只能由某一台主机控制,各微处理器应该在总线空闲时发送启动数据,为了妥善解决多台微处理器同时发送启动数据的传送(总线控制权)冲突,以及决定由哪一台微处理器控制总线的问题,I2C总线允许连接不同传送速率的设备。多台设备之间时钟信号的同步过程称为同步化。 2 I2C数据传输 在I2C总线传输过程中,将两种特定的情况定义为开始和停止条件(见图3):当SCL保持“高”时,SDA由“高”变为“低”为开始条件;当SCL保持“高”且SDA由“低”变为“高”时为停止条件。开始和停止条件均由主控制器产生。使用硬件接口可以很容易地检测到开始和停止条件,没有这种接口的微机必须以每时钟周期至少两次对SDA取样,以检测这种变化。 SDA线上的数据在时钟“高”期间必须是稳定的,只有当SCL线上的时钟信号为低时,数据线上的“高”或“低”状态才可以改变。输出到SDA线上的每个字节必须是8位,每次传输的字节不受限制,但每个字节必须要有一个应答ACK。如果一接收器件在完成其他功能(如一内部中断)前不能接收另一数据的完整字节时,它可以保持时钟线SCL为低,以促使发送器进入等待状态;当接收器准备好接受数据的其它字节并释放时钟SCL后,数据传输继续进行。I2C数据总线传送时序如图4所示。 数据传送具有应答是必须的。与应答对应的时钟脉冲由主控制器产生,发送器在应答期间必须下拉SDA线。当寻址的被控器件不能应答时,数据保持为高并使主控器产生停止条件而终止传输。在传输的过程中,在用到主控接收器的情况下,主控接收器必须发出一数据结束信号给被控发送器,从而使被控发送器释放数据线,以允许主控器产生停止条件。合法的数据传输格式如下:I2C总线在开始条件后的首字节决定哪个被控器将被主控器选择,例外的是“通用访问”地址,它可以在所有期间寻址。当主控器输出一地址时,系统中的每一器件都将开始条件后的前7位地址和自己的地址进行比较。如果相同,该器件即认为自己被主控器寻址,而作为被控接收器或被控发送器则取决于R/W位。 3 I2C总线的应用 I2C总线是各种总线中使用信号线最少,并具有自动寻址、多主机时钟同步和仲裁等功能的总线。因此,使用I2C总线设计计算机系统十分方便灵活,体积也小,因而在各类实际应用中得到广泛应用。下面举二个应用示例。 3.1 伺服控制系统用I2C扩展LCD显示器 图5是一个伺服系统的结构图。它用8XC752单片机的PWM输出经放大后来驱动电机,电机的转速由测速机测取并直接送到8XC752片内的A/D电路。处理后的有关信息经I2C总线送到LCD驱动芯片PCF8577以驱动64段LCD显示板。 3.2 通用I/O端口作为I2C总线接口 目前,51、96系列的单片机应用很广,但是由于它们都没有I2C总线接口,从而限制了在这些系统中使用具有I2C总线接口的器件。通过对I2C总线时序的分析,可以用51单片机的两根I/O线来实现I2C总线的功能。接I2C总线规定:SCL线和SDA线是各设备对应输出状态相“与”的结果,任一设备都可以用输出低电平的方法来延长SCL的低电平时间,以迫使高速设备进入等待状态,从而实现不同速度设备间的时钟同步。因此,即使时钟脉冲的高、低电平时间长短不一,也能实现数据的可靠传送,可以用软件控制I/O口做I2C接口。下面就是用GMS97C2051的通用I/O口来作为I2C总线接口,并由软件控制实现数据传送的例子,图6为其连线图。 在单主控器的系统中,时钟线仅由主控器驱动,因此可以用51系列的一根I/O线作为SCL的信号线,将其设备为输出方式,并由软件控制来产生串行时钟信号。在实际系统中使用了P1.3。另一根I/O线P1.2作为I2C总线的串行数据线,可在软件控制下在时钟的低电平期间读取或输出数据。系统传输数据的过程如下:先由单片机发出一个启始数据信号,接着送出要访问器件的7位地址数据,并等待被控器件的应答信号。当收以应答信号后,根据访问要求进行相应的操作。如果是读入数据,则数据线可一直设为输入方式,中间不需要改变SDA线的工作方式,每读入一个字节均应依次检测应答信号;如果是输出数据,则首先将SDA设置为输出方式,当发送完一个字节后,需要改变SDA线为输入方式,此时读入被控器件的应答信号就完成了一个字节的传送。当所有数据传输完毕后,应向SDA发出一个停止信号,以结束该次数据传输。 下面给出51系列用汇编语言实现启始、停止、读、写、应答的程序,读者也可以根据I2C总线时序在96系列或其它单片机上实现I2C总线接口。 a.启动位程序 ACK:CLR P1.3 NOP NOP SETB P1.2 NOP NOP NOP CPL P1.3 ;P1.3=1 NOP NOP NOP DENGDAI:JB P1.2,DENGDAI RET b.读数据程序 读字节可以在当前地址读(CURRENT READ),也可以随机读(RANDOM READ),读出数据的最后一个字节后不用加应答信号。 READ:PUSH 0EH CLR P1.4 LCALL BSTART ;START MOV A,#0A0H ;SEND THE CNOTROL BYTE LCALL SENDBYTE LCALL ACK MOV A,R1 ;SEND THE ADDRESS LCALL SENDBYTE LCALL ACK LCALL BSTART ;START MOV A,#0A1H ;SEND THE CNOTROL BYTE LCALL SENDBYTE LCALL ACK LCALL READBYTE LCALL BSTOP POP 0EH RET 送字节程序: SENDBYTE:PUSH 0EH PUSH 00H MOV R0,#08H LOOP1:CLR P1.3 NOP NOP RLC A MOV P1.2,C CPL P1.3 ;P1.3=1 NOP NOP DJNZ R0,LOOP1 POP 00H POP 0EH RET 读字节子程序: READBYTE:PUSH 0EH PUSH 00H MOV R0,#08H;READ THE CONTENT CLR A LOOP4:CLR P1.3 NOP NOP NOP SETB P1.3 ;P1.3=1 MOV C,P1.2 RLC A DJNZ R0,LOOP4 MOV R2,A POP 00H POP 0EH RET c.写数据程序: WRITE:PUSH 0EH CLR P1.4 LCALL BSTART MOV A,#0A0H CLALL SENDBYTE ;SEND THE CONTROL BYTE LCALL ACK MOV A,R1 ;SEND THE ADDRESS LCALL SENDBYTE LCALL ACK MOV A,R2 ;WRITE THE CONTENT LCALL SENDBYTE LCALL ACK LCALL BSTOP POP 0EH RET 连续写的两个字节之间最好是有10ms的延时。当然,也可以进行页写(PAGE WRITE),即一次性连续写8个字节,但采用页写方式时每个字节后要有一个应答信号。 d.停止位程序: BSTOP:CLR P1.3 NOP NOP CLR P1.2 NOP NOP NOP SETB P1.3 NOP NOP NOP SETB P1.2 RET
2025年07月14日
6 阅读
0 评论
0 点赞
1
...
36
37
38
...
69