介绍了基于Xilinx Spartan- 3E FPGA XC3S250E 来完成分辨率为738×575 的PAL 制数字视频信号到800×600 的VGA 格式转换的实现方法。关键词: 图像放大; PAL; VGA; FPGA 目前, 绝大多数监控系统中采用的高解析度摄像机均由47 万像素的CCD 图像传感器采集图像, 经DSP 处理后输出的PAL 制数字视频信号不能直接在VGA 显示器上显示, 而在许多场合需要在VGA 显示器上实时监视, 这就需要将隔行PAL 制数字视频转换为逐行视频并提高帧频, 再将每帧图像放大到800×600 或1 024×768。常用的图像放大的方法有很多种, 如最临近赋值法、双线性插值法、样条插值法等[ 1] 。由于要对图像进行实时显示, 本文采用一种近似的双线性插值方法对图像进行放大。随着微电子技术及其制造工艺的发展, 可编程逻辑器件的逻辑门密度有了很大提高, 现场可编程逻辑门阵列( FPGA) 有着逻辑资源丰富和可重复以及系统配置的灵活性, 同时随着微处理器、专用逻辑器件以及DSP 算法以IP Core 的形式嵌入到FPGA 中[ 2] , FPGA 的功能越来越强, 因此FPGA 在现代电子系统设计中发挥着越来越重要的作用。本课题的设计就是采用VHDL 描述, 基于FPGA 来实现的。
上传时间: 2014-02-22
上传用户:a1054751988
PCB 被动组件的隐藏特性解析 传统上,EMC一直被视为「黑色魔术(black magic)」。其实,EMC是可以藉由数学公式来理解的。不过,纵使有数学分析方法可以利用,但那些数学方程式对实际的EMC电路设计而言,仍然太过复杂了。幸运的是,在大多数的实务工作中,工程师并不需要完全理解那些复杂的数学公式和存在于EMC规范中的学理依据,只要藉由简单的数学模型,就能够明白要如何达到EMC的要求。本文藉由简单的数学公式和电磁理论,来说明在印刷电路板(PCB)上被动组件(passivecomponent)的隐藏行为和特性,这些都是工程师想让所设计的电子产品通过EMC标准时,事先所必须具备的基本知识。导线和PCB走线导线(wire)、走线(trace)、固定架……等看似不起眼的组件,却经常成为射频能量的最佳发射器(亦即,EMI的来源)。每一种组件都具有电感,这包含硅芯片的焊线(bond wire)、以及电阻、电容、电感的接脚。每根导线或走线都包含有隐藏的寄生电容和电感。这些寄生性组件会影响导线的阻抗大小,而且对频率很敏感。依据LC 的值(决定自共振频率)和PCB走线的长度,在某组件和PCB走线之间,可以产生自共振(self-resonance),因此,形成一根有效率的辐射天线。在低频时,导线大致上只具有电阻的特性。但在高频时,导线就具有电感的特性。因为变成高频后,会造成阻抗大小的变化,进而改变导线或PCB 走线与接地之间的EMC 设计,这时必需使用接地面(ground plane)和接地网格(ground grid)。导线和PCB 走线的最主要差别只在于,导线是圆形的,走线是长方形的。导线或走线的阻抗包含电阻R和感抗XL = 2πfL,在高频时,此阻抗定义为Z = R + j XL j2πfL,没有容抗Xc = 1/2πfC存在。频率高于100 kHz以上时,感抗大于电阻,此时导线或走线不再是低电阻的连接线,而是电感。一般而言,在音频以上工作的导线或走线应该视为电感,不能再看成电阻,而且可以是射频天线。
上传时间: 2013-11-16
上传用户:极客
光敏电阻,特性解析,典型应用
上传时间: 2013-11-08
上传用户:yzhl1988
ISIS 有一个很完善的图形系统允许你自定义原理图所包含项目的外观比如线条格式,填充色,文本的字体,文本的效果等等… 这个系统非常强大并且允许你自己定义部分或者全部的原理图的全部外观,同时允许加载某些对象到你本地的外观属性. 在ISIS中所有的图形对象都是根据图形格式所画出. 图形格式(graphics style)是一个完整的描述,关于怎样去画出和填充一个图形(比如一条线条,一个方框,圆或别的)并且包含线条的格式(实心线,点线,虚线等等),宽度,颜色,填充格式,填充的前台色和背景色,等等..同样,所有的标号(label)和文字块(cript blocks)在ISIS(终端标号,管脚名,等等)都是根据文本格式所画出来.文本格式(text style)是一个完整的描述,关于怎样去画出一些文本和包含字体的属性(比如:亚洲字体,罗马字体,等等),字符的高度,宽度,颜色,等等… 在ISIS 中,大多数的对象,例如2D图形,线条,终端标号,等等…每一个都有属于自己的格式以便他们能被定义,也就是说,比如,一条线条和另外一条线条有不同的外观. 这些项目作为这个对象的格式被设定,别的对象比如管脚名,子电路体,等等 是早已经被预先定义好的格式,因此这些对象只能定义要么全有要么全无的特性,也就是说,比如,子电路体可以有不同的你所想要的外观,但是所有的子电路体必须有相同的外观.
上传时间: 2013-12-24
上传用户:uuuuuuu
注:1.这篇文章断断续续写了很久,画图技术也不精,难免错漏,大家凑合看.有问题可以留言. 2.论坛排版把我的代码缩进全弄没了,大家将代码粘贴到arduino编译器,然后按ctrl+T重新格式化代码格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脉宽调制波,通过调整输出信号占空比,从而达到改 变输出平均电压的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 个8 位精度PWM 引脚,分别是3, 5, 6, 9, 10, 11 脚。我们可以使用analogWrite()控 制PWM 脚输出频率大概在500Hz 的左右的PWM 调制波。分辨率8 位即2 的8 次方等于 256 级精度。但是有时候我们会觉得6 个PWM 引脚不够用。比如我们做一个10 路灯调光, 就需要有10 个PWM 脚。Arduino Duemilanove 2009 有13 个数字输出脚,如果它们都可以 PWM 的话,就能满足条件了。于是本文介绍用软件模拟PWM。 二、Arduino 软件模拟PWM Arduino PWM 调压原理:PWM 有好几种方法。而Arduino 因为电源和实现难度限制,一般 使用周期恒定,占空比变化的单极性PWM。 通过调整一个周期里面输出脚高/低电平的时间比(即是占空比)去获得给一个用电器不同 的平均功率。 如图所示,假设PWM 波形周期1ms(即1kHz),分辨率1000 级。那么需要一个信号时间 精度1ms/1000=1us 的信号源,即1MHz。所以说,PWM 的实现难点在于需要使用很高频的 信号源,才能获得快速与高精度。下面先由一个简单的PWM 程序开始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 这是一个软件PWM 控制Arduino D13 引脚的例子。只需要一块Arduino 即可测试此代码。 程序解析:由for 循环可以看出,完成一个PWM 周期,共循环255 次。 假设bright=100 时候,在第0~100 次循环中,i 等于1 到99 均小于bright,于是输出PWMPin 高电平; 然后第100 到255 次循环里面,i 等于100~255 大于bright,于是输出PWMPin 低电平。无 论输出高低电平都保持30us。 那么说,如果bright=100 的话,就有100 次循环是高电平,155 次循环是低电平。 如果忽略指令执行时间的话,这次的PWM 波形占空比为100/255,如果调整bright 的值, 就能改变接在D13 的LED 的亮度。 这里设置了每次for 循环之后,将bright 加一,并且当bright 加到255 时归0。所以,我们 看到的最终效果就是LED 慢慢变亮,到顶之后然后突然暗回去重新变亮。 这是最基本的PWM 方法,也应该是大家想的比较多的想法。 然后介绍一个简单一点的。思维风格完全不同。不过对于驱动一个LED 来说,效果与上面 的程序一样。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,这段代码少了一个For 循环。它先输出一个高电平,然后维持(bright*30)us。然 后输出一个低电平,维持时间((255-bright)*30)us。这样两次高低就能完成一个PWM 周期。 分辨率也是255。 三、多引脚PWM Arduino 本身已有PWM 引脚并且运行起来不占CPU 时间,所以软件模拟一个引脚的PWM 完全没有实用意义。我们软件模拟的价值在于:他能将任意的数字IO 口变成PWM 引脚。 当一片Arduino 要同时控制多个PWM,并且没有其他重任务的时候,就要用软件PWM 了。 多引脚PWM 有一种下面的方式: int brights[14] = {0}; //定义14个引脚的初始亮度,可以随意设置 int StartPWMPin = 0, EndPWMPin = 13; //设置D0~D13为PWM 引脚 int PWMResolution = 255; //设置PWM 占空比分辨率 void setup() { //定义所有IO 端输出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //随便定义个初始亮度,便于观察 brights[ i ] = random(0, 255); } } void loop() { //这for 循环是为14盏灯做渐亮的。每次Arduino loop()循环, //brights 自增一次。直到brights=255时候,将brights 置零重新计数。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是计数一个PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每个PWM 周期均遍历所有引脚 { if(i < brights[j])\ 所以我们要更改PWM 周期的话,我们将精度(代码里面的变量:PWMResolution)降低就行,比如一般调整LED 亮度的话,我们用64 级精度就行。这样速度就是2x32x64=4ms。就不会闪了。
上传时间: 2013-10-23
上传用户:mqien
存取UDF格式的DVD光盘的驱动程序
上传时间: 2015-01-03
上传用户:xjz632
photoshop图像文件格式说明
上传时间: 2014-01-24
上传用户:qweqweqwe
将rft格式文件转换成html格式文件
上传时间: 2014-01-12
上传用户:watch100
读写pdf格式文件的多平台C语言工具库
上传时间: 2015-01-04
上传用户:cccole0605
西门子手机的图片铃声ota格式下载开发文档
上传时间: 2015-01-04
上传用户:虫虫虫虫虫虫