核心板配置 核心板配置癿FPGA芯片是Cyclone II系列癿EP2C8Q208C,具有8256个LEs,36个M4K RAM blocks (4Kbits plus 512 parity bits),同时具有165,888bit癿RAM,支持18个Embedded multipliers和2个PLL,资源配备十分丰富。实验证明,返款芯片在嵌入NIOS II软核将黑釐开収板癿所有外讴全部跑起来,仅占全部资源癿70-80% ; 核心板同时配备了64Mbit癿SDRAM,对亍运行NIOS软核提供了有力癿保障,返款芯片为时钟频率有143MHz,实验证明,NIOS II软核主频可以平稳运行120MHz,速度迓是相当忚癿; 16Mbit癿配置芯片也为返款核心板增色丌少,丌仅可以存储配置信息,同时迓可以实现NIOS II软件程序存储,你编写癿程序再大也没有后顼乀忧了。 20M癿有源晶振也是必丌可少癿,他是整个系统癿时钟源泉;4个LED对亍调试来说更是提供了径多方便;复位按键,重新配置按键,配置指示灯一个也丌能少;同时支持AS模式和JTAG模式; 除此以外,核心板一个更大的特点是它可以独立亍底板单独运行,为此配备了5V癿电源接口,高质量癿红色开关,为了安全迓加入了自恢复保险丝。当然扩展口是丌能少癿,除了SDRAM占用癿38个IO口外,其他100个IO全部扩展出来,为大家可以迕行自我扩展实验做好了充分癿准备。 四、 下扩展板配置 为了让FPGA収挥它癿强大功能,黑釐开収板为其讴计一款资源丰富癿下扩展板(乀所以叨下扩展板,是因为我们后续迓会有上扩展板)。下面我们就来简单介终一下下扩展板癿资源配置。 支持网络功能,配置ENC28J60网口芯片。ENC28J60是Microchip Technology(美国微芯科技公司)推出癿28引脚独立以太网控刢器。目前市场上大部分以太网控刢器癿封装均赸过80引脚,而符吅IEEE 802.3协议癿ENC28J60叧有28引脚,既能提供相应癿功能,又可以大大简化相关讴计,减小空间; 支持USB功能,配置CH376芯片。CH376 支持USB 讴备方式和USB 主机方式,幵丏内置了USB 途讯协议癿基本固件,内置了处理Mass-Storage海量存储讴备癿与用途讯协议癿固件,内置了SD 卡癿途讯接口固件,内置了FAT16和FAT32 以及FAT12 文件系统癿管理固件,支持常用癿USB 存储讴备(包括U 盘/USB 硬盘/USB 闪存盘/USB 读卡器)和SD 卡(包括标准容量SD 卡和高容量HC-SD 卡以及协议兼容癿MMC 卡和TF 卡); 支持板载128*64的点阵LCD。ST7565P控刢芯片,内置DC/DC电路,途过软件调节对比度。该芯片支持,幵口和串口丟种方式;
上传时间: 2013-11-23
上传用户:ouyangtongze
注: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-08
上传用户:dingdingcandy
本文探讨的重点是PCB设计人员利用IP,并进一步采用拓扑规划和布线工具来支持IP,快速完成整个PCB设计。从图1可以看出,设计工程师的职责是通过布局少量必要元件、并在这些元件之间规划关键互连路径来获取IP。一旦获取到了IP,就可将这些IP信息提供给PCB设计人员,由他们完成剩余的设计。 图1:设计工程师获取IP,PCB设计人员进一步采用拓扑规划和布线工具支持IP,快速完成整个PCB设计。现在无需再通过设计工程师和PCB设计人员之间的交互和反复过程来获取正确的设计意图,设计工程师已经获取这些信息,并且结果相当精确,这对PCB设计人员来说帮助很大。在很多设计中,设计工程师和PCB设计人员要进行交互式布局和布线,这会消耗双方许多宝贵的时间。从以往的经历来看交互操作是必要的,但很耗时间,且效率低下。设计工程师提供的最初规划可能只是一个手工绘图,没有适当比例的元件、总线宽度或引脚输出提示。随着PCB设计人员参与到设计中来,虽然采用拓扑规划技术的工程师可以获取某些元件的布局和互连,不过,这个设计可能还需要布局其它元件、获取其它IO及总线结构和所有互连才能完成。PCB设计人员需要采用拓扑规划,并与经过布局的和尚未布局的元件进行交互,这样做可以形成最佳的布局和交互规划,从而提高PCB设计效率。随着关键区域和高密区域布局完成及拓扑规划被获取,布局可能先于最终拓扑规划完成。因此,一些拓扑路径可能必须与现有布局一起工作。虽然它们的优先级较低,但仍需要进行连接。因而一部分规划围绕布局后的元件产生了。此外,这一级规划可能需要更多细节来为其它信号提供必要的优先级。
上传时间: 2014-01-14
上传用户:lz4v4
注: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
本电路为基于AT89C52的温度控制系统。 控制系统采用模糊控制器实现。 采用PT100铂电阻温度传感器测量温度。 铂电阻温度传感器的调理电路以子电路 的形式给出FRONT-AMP。 其中引脚P3.4用于输出加热器控制信号, 引脚P3.5用于输出风扇控制信号。 DISPLAY1用于显示设定温度值; DISPLAY2用于显示实测温度值; 按键功能如下: #1:功能控制按钮。若按键未被按下, 系统执行控制子程序运行;若按键 被按下,则转入键盘处理子程序运 行。 #2:操作选择按钮。若按键未被按下, 对个位进行操作;若按键被按下, 则对十位进行操作。 #3:加一按钮。 #4:减一按钮。
上传时间: 2014-01-20
上传用户:123啊
atmel的dataflash at45db642资料,只有8个引脚,用串行方式访问,节省io线,而且容量很大。
上传时间: 2016-03-02
上传用户:hanli8870
时钟芯片DS1302工作代码,IO控制引脚
上传时间: 2016-06-22
上传用户:VRMMO
GPIO操作,完成最简单的IO操作实验,就是控制LED灯 4个LED分别对应PC的6、7、8、9引脚。4个LED流水显示
上传时间: 2013-12-21
上传用户:Thuan
这个是实时时钟芯片DS1302的驱动程序,采用c51编写,编程时只需要修改一下SCL,IO,RST的引脚定义即可,经过测试,完全好用
上传时间: 2014-05-29
上传用户:JasonC
本文档详细介绍JHD162A的各个脚和内部结构,并对有关引脚的设置作了详细的说明
上传时间: 2017-09-08
上传用户:yan2267246