00IC-EPM240程序例子说明
- 格式:pdf
- 大小:120.53 KB
- 文档页数:2
一起学mini2440裸机开发(十二)--mini2440的串口中断实验这一节实现利用中断实现串口的中断功能,关于串口的原理我就不再讲述了,如果不明白,就请查看我的另一篇博客/mybelief321/article/details/8931064下面我还是贴出自己的实验代码,我上传到了网站,可以自行下载,下载后,打开工程文档,直接编译后,利用Flash/Dowmload功能下载到nor flash,关于下载到nor flash如果有不会的请看:/mybelief321/article/details/8954788本实验实现的功能是:利用串口中断功能,通过串口调试工具接收到字符后再显示。
下图为我的工程文档main.c文件#include"isrservice.h"#include"uart.h"#include"led.h"#include"interrupt.h"int main(){Uart0_Init(115200); //初始化并设置波特率为115 200Uart0_Interrupt_Init(); //Uart0中断初始化Led_Init(); //Led初始化while(1) //循环,等到中断发生{;}}led.h文件#ifndef __LED_H__#define __LED_H__#include<s3c2440.h>#define Led1_On() {GPBDAT&=(~(1<<5));}#define Led1_Off() {GPBDAT|=(1<<5);}#define Led2_On() {GPBDAT&=(~(1<<6));}#define Led2_Off() {GPBDAT|=(1<<6);}#define Led3_On() {GPBDAT&=(~(1<<7));}#define Led3_Off() {GPBDAT|=(1<<7);}#define Led4_On() {GPBDAT&=(~(1<<8));}#define Led4_Off() {GPBDAT|=(1<<8);}/***************************************************** 函数名称:void Led_Init(void)* 全局变量:无* 参数说明:无* 返回值;无* 功能:设置GPN5-8为输出功能,初始化4个LED灯灭*****************************************************/void Led_Init(void);#endifled.c文件/***************************************************** 我的mini2440开发板上4个LED灯对应的GPIO口* LED1---GPB5 LED2---GPB6* LED3---GPB7 LED4---GPB8*****************************************************/#include<s3c2440.h>/***************************************************** 函数名称:void Led_Init(void)* 全局变量:无* 参数说明:无* 返回值;无* 功能:设置GPB5-8为输出功能,初始化4个LED灯灭*****************************************************/void Led_Init(void){GPBCON&=~((3<<10)|(3<<12)|(3<<14)|(3<<16));GPBCON|=((1<<10)|(1<<12)|(1<<14)|(1<<16)); //设置GPB5-8口为输出功能GPBUP&=~((1<<5)|(1<<6)|(1<<7)|(1<<8)); //上拉电阻使能GPBDAT|=(1<<5)|(1<<6)|(1<<7)|(1<<8); //令GPBDAT5-8均为高电平,即令4个led灯全灭}uart.h文件#ifndef __UART_H__#define __UART_H__/************************************************函数名称:void Uart0_Init(unsigned int baudrate)*参数说明:baudrate:波特率*返回值:无*全局变量: 无*功能:对UART0进行初始化************************************************/void Uart0_Init(unsigned int baudrate);#endifuart.c文件#include<s3c2440.h>#include<stdarg.h>#include"uart.h"#define PCLK 50000000#define UART_BRD (int)((PCLK/(baudrate*16))-1)/************************************************函数名称:void Uart0_Init(unsigned int baudrate)*参数说明:baudrate:波特率*返回值:无*全局变量: 无*功能:对UART0进行初始化************************************************/void Uart0_Init(unsigned int baudrate){GPHCON&=~((3<<4)|(3<<6)); //GPH2--TXD0;GPH3--RXD0GPHCON|=((2<<4)|(2<<6)); //设置GPH2、GPH3为TXD0、RXD0功能GPHUP=0x00; //上拉电阻使能ULCON0|=0x03; //设置数据发送格式:8个数据位,1个停止位,无校验位UCON0=0x05; //发送模式和接收模式都使用查询模式UBRDIV0=UART_BRD; //设置波特率,其中波特率作为一个参数传递到该初始化函数 URXH0=0; //将URXH0清零}interrupt.h文件#ifndef __INTERRUPT_H__#define __INTERRUPT_H__/***************************************************** 函数名称:void Uart0_Interrupt_Init(void)* 全局变量:无* 参数说明:无* 返回值;无* 功能:将UART0中断屏蔽位设为无效*****************************************************/void Uart0_Interrupt_Init(void);#endifinterrupt.c文件#include<s3c2440.h>#include"interrupt.h"/***************************************************** 函数名称:void Uart0_Interrupt_Init(void)* 全局变量:无* 参数说明:无* 返回值;无* 功能:将UART0中断屏蔽位设为无效*****************************************************/void Uart0_Interrupt_Init(void){INTMSK&=~(1<<28); //Uart0中断带有子中断,所以需要将//Uart0总中断屏蔽位置为无效,然后将发送//中断和接收中断屏蔽位置设为无效,INTSUBMSK&=~((1<<0)|(1<<1)); //这样程序才能顺利地响应发送中断和接收}isrservice.h文件#ifndef __ISRSERVICE_H__#define __ISRSERVICE_H__/***************************************************** 函数名称:void __irq IRQ_Handler(void)* 全局变量:无* 参数说明:无* 返回值;无* 功能:Uart0中断服务函数,必须加__irq*****************************************************/void __irq IRQ_Handler(void);#endifisrservice.c文件#include<s3c2440.h>#include"isrservice.h"#include"led.h"extern unsigned int flag; //声明外部变量flag,该变量是在main.c文件中定义的//当1s到来时,中断响应函数将该变量值取反,在主//程序中通过检测该变量的值来实现不同的操作/***************************************************** 函数名称:void __irq IRQ_Handler(void)* 全局变量:无* 参数说明:无* 返回值;无* 功能:Uart0中断服务函数,必须加__irq*****************************************************/void __irq IRQ_Handler(void) //注意这个函数名字要和S3C2440.s处的跳转标号相同{unsigned char buf;if(SUBSRCPND&(1<<0)) //接收中断{buf=URXH0; //将接收到的字符存放在buf中Led1_On();SUBSRCPND|=1<<0; //清除接收中断SRCPND|=1<<28;INTPND|=1<<28;UTXH0=buf; //PC机将接收的字符通过串口调试工具显示在屏幕上 }if(SUBSRCPND&(1<<1)) //发送中断{Led2_On();SUBSRCPND|=1<<1; //清除发送中断SRCPND|=1<<28;INTPND|=1<<28;}}。
分频计数实验说明这个实验可以说是verilog入门最最基础的实验了,我们不做太多的理论分析,实践是硬道理。
在实验中,我们把分频输出的信号clk_div和蜂鸣器连接在一起,大家就可以真真切切的感受到什么是分频了。
下面的程序里,用了20bit 的计数器cnt,循环的计数,所以说一个周期有2的20次幂也即大约有1M分频,因为主时钟50MHz(周期就是20ns),所以20ms一个计数周期。
蜂鸣器就以20ms 的周期性发声,大家可以改变cnt的值看看效果。
大家可以直接运行同目录下的clkdivverilog的工程进行下载配置。
代码如下:module clkdiv(clk,rst_n,clk_div);input clk; //50MHzinput rst_n; //低电平复位信号output clk_div; //分频信号//---------------------------------------------------reg[19:0] cnt; //分频计数器always @ (posedge clk or negedge rst_n) //异步复位if(!rst_n) cnt <= 20'd0;else cnt <= cnt+1'b1; //寄存器cnt 20ms循环计数//----------------------------------------------------reg clk_div_r; //clk_div信号值寄存器always @ (posedge clk or negedge rst_n)if(!rst_n) clk_div_r <= 1'b0;else if(cnt == 20'hfffff) clk_div_r <= ~clk_div_r; //每20ms让clk_div_r值翻转一次assign clk_div = clk_div_r;endmodule。
2012届毕业设计任务书一、课题名称:基于EPM240T100-5芯片步进电机控制器设计二、指导老师:王勇三、设计内容与要求1、课题概述步进电动机的技术已很成熟,特别适合于小功率开环定位系统,至今还没有能取代它的更适合产品,今后将继续稳步发展和完善化在功率稍大和要求高响应高速度的系统,则更多地让位给交流伺服系统。
在现代工业控制和医疗器械中广泛的使用,但是目前主要是应用单片机进行时序控制,在应用现成的驱动器,这样势必会提高仪器仪表的成本和使用范围,本毕业设计针对ASIC芯片来进行一个三相步进电机控制和驱动系统,系统结构简单,体积小,成本低,移植性强。
2、设计内容与要求(1).确定设计方案,绘制方框图;(2).设计各部分电路,要求在一片EPM240C100-5芯片上实现主控制功能,驱动电路可另行设计实现,在保证实现基本功能和主要技术指标的前提下注意降低成本,以获取较高的性价比;(3).分析各单元电路的工作原理和特性;(4).画出整机电路图,用QUARTUS II软件仿真所有子电路,并在实际电路板上调试实现功能,说明电路调试的基本方法;(5).要求设计键盘控制功能具有启动/停止、连续/单步、正转/反转、8档加速/8档减速等功能,且能消除键盘抖动;(6).可以使用矩阵键盘或者独立键盘。
3、技术指标:(1).芯片选择:CPLD中的MAX II EPM240C100-5芯片;(2).步进电机:四相步进电机;(3).驱动功率:加驱动芯片ULN2003达5W;(4).逻辑工作电压:DC5V,驱动电压12V(5).步进精度或角度:3°(6).使用环境:-20~85℃。
(7).要求控制与驱动之间加光耦隔离四、设计参考书及参考网址1、潘松主编《EDA技术与VHDL》,清华大学出版社2、唐亚平主编《EDA技术应用》,化学工业出版社3、宋振辉主编《EDA技术与VHDL》,北京大学出版社4、徐志军王金明尹廷辉编蓍《EDA技术与VHDL设计》,电子工业出版社5、参考网址:/等五、设计说明书要求1、封面2、目录3、内容摘要(200~400字左右,中英文)4、正文(设计方案比较与选择,设计方案原理、计算、分析、论证,设计结果的说明及特点)5、结束语6、附录(参考文献、图纸、材料清单等)六、设计进程安排第1周:资料准备与借阅,了解课题思路。
CPLD 开发板EPM240 系列产品简介一. 产品简介CPLD 开发板EMP240 是一套基于Altera MAXⅡ240 芯片的学习开发平台,我们为用户提供了丰富的板载资源及例子程序(Verilog和VHDL),很容易实现产品的直接应用及再次开发。
本开发板供CPLD编程初学者学习使用,也可作为系统板嵌入到用户的产品供用户进行二次开发以便缩短产品开发周期,同时也可以作为毕业设计的开发平台,让您轻轻松松做好您的毕业设计,因为我们附带了众多功能实现的源代码,我们还将无偿提供板载资源的的资料,来提高您的创新性。
整体效果图二系统资源八位共阴数码管;8个LED灯;8 个独立按键;一个八位拔码开关;1个RS-232接口;1个PS/2接口;LCD1620字符液晶接口;1路步进电机接口;1路直流电机控制端口;USB接口和外接接口两种电源供电方式;采用50M有源晶振、ALTERA新一代MAX II CPLD EPM240一个红外接收头;1个DS18B20外置端口;1路独立继电器输;1路蜂鸣器;JTAG接口一个;I2C存储器24LC02扩展I/0,用户可以接其它用户设备,可以和自己的目标系统进行直接连接使用.。
三. CPLD 开发板实验代码(提供以下实验原代码,采用Verilog 编写,部分也采用VHDL 语言编写)实验一译码1、38译码2、与门实验二 LED显示1、LED 闪烁2、LED流水灯实验三数码管1、数码管静态显示2、数码管动态显示3、数字时钟实验四按键控制LED1、键值显示2、拔码开关译码3、按键控制继电器实验五音乐演奏1、七色音符演奏2、MUSIC播放实验六红外接收1、红外接收编码分析实验七电机控制1、PWM 脉宽调制控制直流电机转速2、步进电机调速控制实验八 LCD显示1、LCD1602显示控制实验九通讯1、串口发送2、串口接收实验十 PS/21、PS/2键盘键值显示2、PS/2鼠标功能仿真实验十一综合测试1、多功能综合测试四配套资料及软件1.完整的电路原理图(PDF格式);2.所有实验提供源代码;3.提供开发板上的所有芯片资料;4.赠送 QUARTUS 7.0完全开发视频教材(市面上买不到的视频教材);5. 提供 QUARTUS 7.0完全破解版软件及注册码;7. CPLD开发资料,用户手册等。
笔记16基于E P M240的入门实验一、学习板简介B J E P M240学习板是特权同学和知名电子技术网站w w w.e d n c h i n a.c o m合作推出的一款F P G A/C P L D入门级学习板,该学习板在ED N助学活动期间以低廉的价格提供给所有注册会员,并且赠送免费的P C B板㊂学习板以齐全的资料㊁良好的代码风格博得了广大网友的一致认可,很适合初学者入门学习,该板子的一切相关问题都可以在E D N网站的C P L D/F PG A助学小组(h t t p://g r o u p.e d n c h i n a.c o m/1375/)里进行讨论㊂1.B J E P M240学习板功能框图图5.1是整板系统的功能框图,从图中可以清楚地看到以A l t e r a的C P L D芯片E P M240T100为主的学习板上丰富的外设资源及其位置分布情况㊂2.B J E P M240学习板基本配置①主芯片使用的是A l t e r a公司的MA XⅡ系列E P M240T100C5,该芯片有240个逻辑单元,等效宏单元192个,资源比较丰富,内有8K bF l a s h的存储空间㊂②50MH z有源晶振,作为系统主时钟㊂③低电平复位按键,使用E P M240的全局复位引脚㊂④8色V G A接口1个,让大家掌握计算机显示器的驱动原理㊂⑤R S232串口1个,通过串口调试助手轻松实现U A R T通信协议㊂⑥P S/2接口1个,实现键盘解码,配合串口调试助手在P C机上显示键值㊂⑦70n s快速读/写的S R AM芯片I S62L V25670U,具有32K B存储空间,让大家熟悉S R AM的读/写操作㊂⑧E E P R OM芯片A T24C02,让大家熟悉使用V e r i l o g进行I2C通信㊂⑨4个独立按键,进行V e r i l o g脉冲采样和按键消抖控制㊂笔记16基于E P M240的入门实验186图5.1B J E P M240学习板资源分布及功能框图⑩4个流水灯,配合4位按键进行J o h n s o n计数器实验㊂췍蜂鸣器,实现简单的分频计数器㊂췍2位数码管,使用其进行计数实验㊂췍外接信号电平转换芯片S N74L V C4245,可以与单片机等5V器件进行通信,预留16针总线接口㊂췍使用电源开关和电源指示灯,系统稳定可靠㊂3.E P M240T100C5芯片介绍选用目前市场性价比较高的A l t e r a公司MA XⅡ系列的C P L D㊂A l t e r a推出的MA XⅡ器件系列是一款革命性的C P L D产品,它基于突破性的C P L D架构,达到业界所有C P L D系列中单个I/O引脚的最低成本和最小功耗㊂这些器件采用新的查找表(L U T)体系,采用笔记16 基于E P M 240的入门实验187T S M C 的0.18μm 嵌入F l a s h 工艺,使其裸片尺寸仅为同样工艺器件的1/4㊂MA X Ⅱ系列和上一代MA X 产品相比,成本降低了一半,功耗只有其1/10,同时保持MA X 系列原有的瞬态启动㊁单芯片㊁非易失性和易用性㊂新的系列器件容量翻了两番,性能是上一代MA X C P L D 的两倍多,使消费类㊁通信㊁工业和计算机产品的设计者能够采用MA X Ⅱ系列器件代替昂贵且不够灵活的小型A S I C 和A S S P ㊂MA X Ⅱ系列器件的主要特征:①成本优化的架构:新型MA X ⅡC P L D 架构包括基于L U T 的L A B 阵列㊁非易失性F l a s h 存储模块和J T A G 控制电路㊂②低功耗:MA X Ⅱ器件是动态功耗较低的C P L D ㊂③高性能:MA X Ⅱ器件支持高达300MH z 的内部时钟,可为用户提供更高的系统级性能㊂通过改善布线结构,引脚间的延时与其他同容量的C P L D 相比大大降低,目前降低到3.6n s ㊂MA X Ⅱ系列引脚与引脚之间的最大延时见表5.1,其中t P D 1为最大距离引脚之间的延迟时间(即对角上的引脚之间),t P D 2为最小距离引脚的延迟时间(即相邻的引脚之间)㊂④用户F l a s h 存储器:MA X ⅡC P L D 内的用户F l a s h 存储器是一个大小为8K b㊁用户可访问且可编程的F l a s h 存储器块,可用于用户自己定义的数据㊂⑤实时在系统可编程能力(I S P ):MA X Ⅱ器件支持实时在系统可编程㊂⑥灵活的多电压内核:MA X Ⅱ架构支持多电压,允许器件在1.8V ㊁2.5V 或3.3V 电压环境下工作㊂⑦J A T G 翻译器:MA X ⅡC P L D 具有一种被称为J A T G 翻译器的功能,这种功能允许通过MA X Ⅱ器件执行定制的J T A G 指令,配置单板上不兼容J T A G 协议的器件,从而简化了单板管理㊂⑧I /O 能力:MA X ⅡC P L D 的I /O 能力加强了其易用性和系统集成能力㊂表5.2列出了MA X Ⅱ器件支持的I /O 标准㊂表5.1 M A X Ⅱ系列引脚与引脚之间的最大延时参 数E P M 240E P M 570E P M 1270E P M 2210单 位t P D 14.55.46.06.6n s t P D 23.63.63.63.6n s表5.2 M A X Ⅱ的I /O 标准I /O 标准性能/MH z 3.3VL V T T L /L V C MO S 3002.5VL V T T L /L V C MO S 2201.8VL V T T L /L V C MO S2001.5VL V C M O S 1503.3VP C I334.B J E P M 240学习板实验例程B J E P M 240学习板主要就是为大家提供一个硬件学习的平台㊂H D L 设计与以往的软件开发不同,需要学习者具备并行设计的思想,本学习板由浅入深为大家提供了13个具有详笔记16基于E P M240的入门实验188细注释的例程,相信大家在学习完这些例程后能够轻松入门F P G A/C P L D的开发㊂例程清单:①分频计数实验;②按键消抖实验;③J o h n s o n计数器实验;④数码管显示实验;⑤乘法器设计实验;⑥V G A接口实验;⑦串口通信实验;⑧P S2键盘解码实验;⑨I2C通信实验;⑩S R AM读写实验;췍MA XⅡ内部震荡时钟使用实例;췍MA XⅡ的U F M模块使用实例;췍Q u a r t u sⅡ调用M o d e l S i m仿真实例㊂二、分频计数实验这个实验可以说是V e r i l o g入门最基础的实验了,这里不做太多的理论分析,实践是硬道理㊂蜂鸣器与C P L D的接口电路如图5.2所示,当C P L D的I/O口(F M)为高电平时,三极管截至,蜂鸣器不发声;当C P L D的I/O(F M)为低电平时,三极管导通,蜂鸣器发声㊂在V e r i l o g代码设计中,把分频输出的信号c l k_d i v与F M引脚对应,大家就可以真真切切地感受到什么是分频了㊂在代码里,用了20位的计数器c n t循环计数,一个周期有220即大约1M分频㊂因为主时钟频率是50MH z(周期是20n s),所以20m s为一个计数周期㊂蜂鸣器就以40m s的周期发声(其中20m s高电平,20m s低电平),如果大家希望蜂鸣器的发声频率改变,那么可以改变c n t的值㊂接口定义如表5.3所列㊂图5.2蜂鸣器接口电路图表5.3分频计数实验接口定义信号名称方向描述c l k i n p u t时钟信号,50MH zr s t_n i n p u t复位信号,低电平有效c l k_d i v o u t p u t分频信号,连接到蜂鸣器笔记16 基于E P M 240的入门实验189V e r i l o g 代码如下:m o d u l ec l k d i v(c l k ,r s t _n ,c l k _d i v);i n pu tc l k ;//50M H zi n p u tr s t _n ;//低电平复位信号o u t pu tc l k _d i v ;//分频信号,连接到蜂鸣器//--------------------------------------------------------------------------------------------------------------------------r e g[19:0]c n t ;//分频计数器a l w a y s @(p o s e d g ec l ko rn e g e d ger s t _n )//异步复位i f (!r s t _n )c n t <=20ʎd 0;e l s ec n t <=c n t +1ʎb 1;//寄存器c n t 大约20m s 进行循环计数//--------------------------------------------------------------------------------------------------------------------------r e g c l k _d i v _r ;//c l k _d i v 信号值寄存器a l w a y s @(p o s e d g ec l ko rn e g e d g er s t _n )i f (!r s t _n )c l k _d i v _r <=1ʎb 0;e l s ei f (c n t ==20ʎh f f f f f )c l k _d i v _r <=~c l k _d i v _r ; //每20m s 让c l k _d i v _r 值翻转一次a s s i g nc l k _d i v =c l k _d i v _r ;e n d m o d u l e第1个a l w a y s 语句里实现了20位计数器c n t 的循环计数;第2个a l w a ys 语句对c n t 的计数值做判断,满足条件(每一个计数周期)时就会相应的对c l k _d i v _r 进行翻转㊂如此以来,就实现了c l k _d i v 的输出为每一个计数周期(大约20m s )变化一次,从而达到了控制蜂鸣器发声频率的目的㊂三、按键消抖实验键盘分编码键盘和非编码键盘㊂键盘上闭合键的识别由专用的硬件编码器实现㊁并产生键编码号或键值的键盘称为编码键盘,如计算机键盘;而靠软件编程来识别的键盘称为非编码键盘㊂在一般嵌入式应用中,用的最多的是非编码键盘,也有用到编码键盘的㊂非编码键盘又分笔记16基于E P M240的入门实验190为独立键盘和行列式(又称矩阵式)键盘㊂如图5.3所示,按键在闭合和断开时,触点会存在抖动现象㊂在按键按下或者释放的时候都会出现一个不稳定的抖动时间,如果不处理好这个抖动时间,就无法处理好按键编码,所以在设计中必须有效消除按键抖动㊂图5.3按键波形如图5.4所示,4个独立按键一端接地,另一端在上拉的同时连接到C P L D的I/O口㊂当I/O口(S W0/S W1/S W2/S W3)的电平为高时,说明按键没有被按下;当I/O口的电平为低时,说明按键被按下了㊂如图5.5所示,4个发光二极管通过一个510Ω的限流电阻后与C P L D的I/O口连接;发光二极管的负极接地㊂因此,C P L D的I/O口输出高电平时,二极管导通,则点亮;CP L D的I/O口输出低电平时,二极管截止,则不亮㊂图5.4独立按键接口图5.5发光二极管接口该实验需要实现一个简单操作:3个按键分别控制3个发光二极管亮或暗㊂例如,按键1控制发光二极管1,上电初始发光二极管1不亮,当检测到按键1被按下后,发光二极管1点亮,按键1再次被按下时,发光二极管1则不亮,如此反复㊂该实验需要把握好按键消抖检测的设计技巧,其接口定义如表5.4所列㊂笔记基于的入门实验1//--------------------------------------------------------------------------------------------------------------------------r e g [2:0]k e y _r s t ;a l w a y s @(p o s e d g ec l k o rn e g e d ger s t _n )i f (!r s t _n )k e y _r s t <=3ʎb 111;e l s ek e y_r s t <={s w 3_n ,s w 2_n ,s w 1_n };r e g [2:0]k e y_r s t _r ;//每个时钟周期的上升沿将k e y _r s t 信号锁存到k e y_r s t _r 中a l w a y s @(p o s e d g ec l k o rn e g e d g er s t _n )i f (!r s t _n )k e y _r s t _r <=3ʎb 111;e l s ek e y _r s t _r <=k e y_r s t ;//当寄存器k e y _r s t 由1变为0时,k e y_a n 的值变为高,维持一个时钟周期w i r e [2:0]k e y _a n =k e y _r s t _r&(~k e y_r s t );//--------------------------------------------------------------------------------------------------------------------------r e g [19:0]c n t ;//计数寄存器a l w a y s @(p o s e d g ec l k o rn e g e d g er s t _n )i f (!r s t _n )c n t <=20ʎd 0;//异步复位笔记16基于E P M240的入门实验192e l s ei f(k e y_a n)c n t<=20ʎd0;e l s ec n t<=c n t+1ʎb1;r e g[2:0]l o w_s w;a l w a y s@(p o s e d g ec l k o rn e g e d g er s t_n)i f(!r s t_n)l o w_s w<=3ʎb111;e l s ei f(c n t==20ʎhf f f f f)//满20m s,将按键值锁存到寄存器l o w_s w中,c n t==20ʎh f f f f fl o w_s w<={s w3_n,s w2_n,s w1_n};//--------------------------------------------------------------------------------------------------------------------------r e g[2:0]l o w_s w_r;//每个时钟周期的上升沿将l o w_s w信号锁存到l o w_s w_r中a l w a y s@(p o s e d g ec l k o rn e g e d g er s t_n)i f(!r s t_n)l o w_s w_r<=3ʎb111;e l s el o w_s w_r<=l o w_s w;//当寄存器l o w_s w由1变为0时,l e d_c t r l的值变为高,维持一个时钟周期w i r e[2:0]l e d_c t r l=l o w_s w_r[2:0]&(~l o w_s w[2:0]);r e g d1;r e g d2;r e g d3;a l w a y s@(p o s e d g ec l ko rn e g e d g er s t_n)i f(!r s t_n)b e g i nd1<=1ʎb0;d2<=1ʎb0;d3<=1ʎb0;e n de l s eb e g i n//某个按键值变化时,L E D将做亮灭翻转i f(l e d_c t r l[0])d1<=~d1;i f(l e d_c t r l[1])d2<=~d2;i f(l e d_c t r l[2])d3<=~d3;e n da s s i g nl e d_d3=d1?1ʎb1:1ʎb0;//L E D翻转输出a s s i g nl e d_d2=d2?1ʎb1:1ʎb0;a s s i g nl e d_d1=d3?1ʎb1:1ʎb0;e n d m o d u l e笔记16 基于E P M 240的入门实验193也许初学者看到这段代码会有点吃力,这里有很多的a l w a y s 和w i r e ㊂的确是这样,一个好的V e r i l o g 代码,不应该把一大堆寄存器的赋值都放到一个a l w a ys 语句里,那样虽然看上去代码很简捷,但是维护起来却很痛苦㊂所以,设计中往往应该一个(或者少数几个)寄存器的赋值对应单独的一个a l w a ys 来执行㊂其次是w i r e 连线很多,要是仔细研究代码,大家就不难发现所有寄存器的连线关系设计者都考虑到了,设计者必须对自己代码要实现的每一个细节都做到心中有数,细化到每一个寄存器㊁每一条连线㊂上面说的是代码风格,下面就看看按键消抖的设计思想㊂前两个a l w a ys 语句其实是对输入键盘进行两次锁存,k e y _r s t 和k e y _r s t _r 是前后两次采样时刻获得的键值㊂k e y _a n 是通过一定的逻辑关系,在键值从1(没按)到0(按键)变化时刻得到一个时钟宽度的高脉冲,这里的k e y_a n 是为了后面20m s 消抖复位时使用的㊂第3个a l w s y s 做(大约)20m s 的计数,这个计数器会在k e y _a n 高脉冲时复位,也就是说,一旦发现按键出现从0到1的释放抖动,就对计数寄存器清零;然后隔20m s 会再读取键值,把这个键值放到寄存器l o w _s w 中㊂接下来的一个a l w a y s 语句就是把l o w _s w 的值锁存到l o w _s w _r 里,这样一来,l o w _s w 和l o w _s w _r 就是前后两个时钟周期里的键值了,为什么要这样呢?看下面这个语句:w i r e [2:0]l e d _c t r l =l o w _s w _r [2:0]&(~l o w _s w [2:0]);仔细分析会发现当没有键按下时,l o w _s w=l o w _s w _r =3 b 111,此时的l e d _c t r l =3 b 000;只有当l o w _s w _r 和l o w _s w 的某一位分别为1和0时,才可能使l e d _c t r l 的值改变(也就是把l e d _c t r l 的某一位拉高一个时钟周期),这就意味着当键值由0跳变到1时(按键释放时)才可能把l e d _c t r l 拉高㊂回顾前面的20m s 赋键值,也就是说每20m s 内如果出现按键被按下,那么有一个时钟周期里l e d _c t r l 是会被拉高的;而再看后面的代码,l e d _c t r l 的置高就使得相应L E D 灯的亮灭做一次翻转,这就达到了目的㊂四、J o h n s o n 计数器实验所谓J o h n s o n 计数器,无非就是复杂一点的流水灯实验㊂流水灯加上了按键控制,流水灯的开启关闭和变化方向在按键的控制下进行㊂本实验使用带停止控制的双向4位J o h n s o n 计数器,可以通过L E D 灯直观地在学习板上进行演示㊂该工程的接口定义如表5.5所列㊂19图5.6 数码管接口带小数点的共阴极数码管对应的段选如图5.7所示㊂如表5.6所列,对S M 0~S M 7进行编码得到相应的显示数字或字符(不带小数点显示)㊂笔记基于的入门实验5图5.7 V e r i l o g m o d u l el e d _s e g7(c l k ,r s t_n ,s m _c s 1_n ,s m _c s 2_n ,s m _d b);i n pu tc l k ;//50M H zi n pu tr s t _n ;//复位信号,低有效o u t p u ts m _c s 1_n ,s m _c s 2_n ;//数码管片选信号,低有效o u t p u t [6:0]s m _d b ;//7段数码管(不包括小数点)r e g[24:0]c n t ;//计数器,最大可以计数到225ˑ20n s ʈ640m sa l w a y s @(p o s e d g ec l ko rn e g e d ger s t _n )i f (!r s t _n )c n t <=25ʎd 0;e l s ec n t <=c n t +1ʎb 1;//循环计数r e g[3:0]n u m ;//显示数值笔记16基于E P M240的入门实验196a l w a y s@(p o s e d g ec l ko rn e g e d g er s t_n)i f(!r s t_n)n u m<=4ʎd0;e l s ei f(c n t==24ʎhf f f f f f)n u m<=n u m+1ʎb1;//每(大约)640m s增1//--------------------------------------------------------------------------------------------------------------------------//共阴极:不带小数点//;0,1,2,3,4,5,6,7,//d b3f h,06h,5b h,4f h,66h,6d h,7d h,07h//;8,9,a,b,c,d,e,f,灭//d b7f h,6f h,77h,7c h,39h,5e h,79h,71h,00hp a r a m e t e r s e g0=7ʎh3f,s e g1=7ʎh06,s e g2=7ʎh5b,s e g3=7ʎh4f,s e g4=7ʎh66,s e g5=7ʎh6d,s e g6=7ʎh7d,s e g7=7ʎh07,s e g8=7ʎh7f,s e g9=7ʎh6f,s e g a=7ʎh77,s e g b=7ʎh7c,s e g c=7ʎh39,s e g d=7ʎh5e,s e g e=7ʎh79,s e g f=7ʎh71;r e g[6:0]s m_d b r;//7段数码管(不包括小数点)a l w a y s@(n u m)c a s e(n u m)//N U M值显示在两个数码管上4ʎh0:s m_d b r<=s e g0;4ʎh1:s m_d b r<=s e g1;4ʎh2:s m_d b r<=s e g2;4ʎh3:s m_d b r<=s e g3;4ʎh4:s m_d b r<=s e g4;4ʎh5:s m_d b r<=s e g5;4ʎh6:s m_d b r<=s e g6;4ʎh7:s m_d b r<=s e g7;4ʎh8:s m_d b r<=s e g8;笔记16 基于E P M 240的入门实验1974ʎh 9:s m _d b r <=s e g 9;4ʎh a :s m _d b r <=s e g a ;4ʎh b :s m _d b r <=s e g b ;4ʎh c :s m _d b r <=s e g c ;4ʎh d :s m _d b r <=s e g d ;4ʎh e :s m _d b r <=s e g e ;4ʎh f :s m _d b r <=s e g f ;d e f a u l t :;e n d c a s ea s s i gns m _d b =s m _d b r ;a s s i g ns m _c s 1_n =1ʎb 0;//数码管1常开a s s i g ns m _c s 2_n =1ʎb 0;//数码管2常开e n d m o d u l e设计中用了一个计数器进行定时,每个定时周期显示的数据递增,而相应的译码逻辑触发后,译码输出数据就发生变化,从而改变数码管显示的数值㊂六、乘法器设计实验乘法器是众多数字系统中的基本模块㊂从原理上说它属于组合逻辑范畴;但从工程实际设计上来说,它往往会利用时序逻辑设计的方法来实现,属于时序逻辑的范畴㊂通过这个实验使大家能够掌握利用F P G A /C P L D 设计乘法器的思想,并且能够将设计的乘法器应用到实际工程中㊂乘法器的设计方法有两种:组合逻辑设计方法和时序逻辑设计方法㊂采用组合逻辑设计方法,电路事先将所有的乘积项全部计算出来,最后进行加法运算㊂采用时序逻辑设计方法,电路将部分已经得到的乘积结果右移,然后与乘积项相加并保存和值,反复迭代上述步骤直到计算出最终乘积㊂在该实验中就是要利用时序逻辑设计方法来设计一个16位乘法器,既然是利用时序逻辑设计方法,那么就得利用时钟信号控制乘法器运算㊂利用时序逻辑设计方法的优点是,可以使整体设计具备流水线结构的特征,能适用在各种实际工程设计中㊂在提及乘法器的速度时,可以先了解一下数据吞吐量的概念㊂数据吞吐量是指芯片在一定时钟频率条件下所能处理的有效数据量㊂假设本实验设计的乘法器时钟频率可达300MH z,那么该芯片的数据吞吐量是多少呢?由于完成一次乘法运算需要1个以上的时钟周期,所以,即使采用300MH z 的时钟频率,芯片每秒钟能处理的有效数据吞吐量也一定小于300MH z ㊂对于16位乘法器而言,a i n 和b i n 均为0x F F F F 时,芯片的运算量最大,计算所需的时间也最长,这种情况才能作为计算数据吞吐量的依据㊂19如图5.8所示,综合后的R T L 视图很好地表现出了代码设计中移位累加的设计思想㊂图5.8 乘法器综合后R T L 视图图5.9是该乘法器代码的一个功能仿真波形㊂a i n =89,b i n =33,yo u t =a i n ˑb i n =2937㊂我们发现这个乘法器的吞吐量并不大,在使能信号s t a r t 有效后大约经过了16个时钟周期才输出最终的运算结果㊂大家可以利用流水线设计方法让它在以后的每个时钟周期都输出一个运算结果,这样就能够大大提高吞吐量;或者也可以使用一个大的并行乘法器进行设计,这样会消耗大量的逻辑资源㊂感兴趣的朋友可以自己尝试实现一下㊂笔记16 基于EP M 240的入门实验199图5.9 乘法器实验仿真波形七、V G A 接口实验这里要讲的V G A 显示用的是通用的计算机显示器㊂它的应用背景以及更多的知识建议大家到网络上搜寻,相关文章很多㊂它的接口如图5.10所示㊂图5.10 V G A 接口标准V G A 接口一共有15个接口(拔下任何一台V G A 液晶或是C R T 显示器看看就知道了),真正用到的信号接口不多,就5个㊂H S Y N C 是行同步信号,V S Y N C 是场同步信号,同步信号就是为了让V G A 显示器接收部分知道送来的数据是对应哪一行哪一列的哪一个像素点㊂V G A _R ㊁V G A _G ㊁V G A _B 是三原色信号,这三个信号接口的输入都是模拟信号(标准为0~0.7V ),所以它们都有相应的地线需要连接㊂我们使用的这块学习板的接口做得比较简单,直接用I /O 口去连接V G A 的5个信号接口,并且三原色信号接口输入的只可能是数字信号(0或1),因此驱动液晶屏上显示的颜色最多也就8种㊂一般来说,可以在F P G A /C P L D 和V G A 接口之间加一个D A C 芯片,这样就可能实现65536种或者更多色彩的显示㊂V G A 接口时序如图5.11所示,场同步信号V SY N C 在每帧开始的时候产生一个固定宽度的低脉冲,行同步信号H S Y N C 在每行开始的时候产生一个固定宽度的低脉冲,数据在某些固定的行和列交汇处有效㊂图5.11 V G A 接口时序图20详细的源代码请参考配套光盘㊂八、串口通信实验先简单说说串口通信(U A R T ),该实验只针对R S 232标准㊂如图5.12所示,该接口电路使用了MA X 3232C S E 作为电平转换芯片㊂典型的R S 232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平+5~+15V ,负电平-5~-15V ㊂接收器典型的工作电平为+3~+12V 与-3~-12V ㊂由于发送电平与接收电平的差仅为2~3V ,所以其共模抑制能力较差,再加上双绞线上的分布电容,其传送距离最大约为15m ,最高速率为20K b /s㊂R S 232是为点对点(即只用一对收㊁发设备)通信而设计的,其驱动器负载为3~7k Ω㊂图5.12是MA X 3232C S E 的硬件原理图㊂对C P L D /F P G A 设计者而言,只需要关心与其接口的R S 232_T X 和R S 232_R X 两个信号㊂R S 232_T X 是数据发送端口,R S 232_R X 是数据接收端口㊂简单的串口帧格式如图5.13所示㊂该实验要实现的功能是:C P L D 实时监测R S 232_R X 信号是否有数据,若接收到数据,则把接收到的数据通过R S 232_T X 发回给对方㊂上位机用的是串口调试助手㊂笔记16基于E P M240的入门实验201图5.12M A X3232C S E硬件原理图图5.13简单的串口帧格式在代码设计中,发送数据的波特率是可选的,可以是9600b p s,19200b p s,38400b p s, 57600b p s或115200b p s㊂这部分在模块s p e e d_s e l e c t里,用户可以根据需要进行配置㊂发送的数据帧格式为:1位起始位(保持一个传输位周期的低电平),8位数据,无校验位,1位停止位㊂如图5.14所示,该设计分为4个模块实现,主要是依据数据流的方向进行模块划分㊂m y_u a r t_r x模块主要是完成数据的接收,s p e e d_s e l e c t(s p e e d_r x)模块主要响应m y_u a r t_r x模块发出的使能信号进行波特率计数,并且回送一个数据采样使能信号㊂m y_u a r t_t x模块在m y_u a r t_r x模块接收好一个完整的数据帧后启动,将接收到的数据返回给对方,它的波特率控制是由s p e e d_s e l e c t(s p e e d_t x)模块产生的㊂该工程的顶层接口定义如表5.11所列㊂20图5.14串口实验R T L视图表5.11串口通信实验接口定义信号名称方向描述c l k i n p u t时钟信号,50MH zr s t_n i n p u t复位信号,低电平有效信号名称方向描述r s232_r x i n p u t R S232接收数据信号r s232_t x o u t p u t R S232发送数据信号大家在消化代码的时候可能会看到顶层做了以下两个例化,需要说明的是这两个例化都是针对一个相同的模块s p e e d_s e l e c t,但是例化后的名字不同,分别为s p e e d_r x和s p e e d_t x㊂它们综合后是两个不同的模块,相互独立,不可以复用㊂s p e e d_s e l e c t s p e e d_r x(.c l k(c l k),//波特率选择模块.r s t_n(r s t_n),.b p s_s t a r t(b p s_s t a r t1),.c l k_b p s(c l k_b p s1));s p e e d_s e l e c t s p e e d_t x(.c l k(c l k),//波特率选择模块.r s t_n(r s t_n),.b p s_s t a r t(b p s_s t a r t2),.c l k_b p s(c l k_b p s2));九㊁P S/2键盘解码实验相信大家对P S/2都不会陌生,我们所使用的鼠标㊁键盘大多都是基于P S/2接口设计的㊂笔记基于的入门实验3 .15 P S /2标准接口虽然基于U S如图5.1表5.12所列应答位仅在主机对设备的通信中使用㊂如果数据位中1的个数为奇数校验位就为0因此总进行奇校验(图5.16 P S /2数据帧格式P C 通过P S /2接口与从设备通信时,总在时钟的下降沿读取数据㊂下面介绍键盘编码返回值,键盘的返回值并不是和一般A S C I I 码相对应㊂键盘的处理器如果发现有键被按下㊁释放或按住,将发送扫描码的信息包到计算机㊂扫描码有两种不同类型的通码和断码,当一个键被按下或按住,就发送通码;当一个键被释放,就发送断码㊂每个按键被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以测定是哪个按键㊂每个键一整套的通断码组成了扫描码集,有三套标准的扫描码集,分别是第一套㊁第二套和第三套㊂所有现代的键盘默认使用第二套扫描码㊂虽然多数第二套通码都只有一个字节宽,但也有少数扩展按键的通码是2字节或4字节宽,这类的通码第1个字节总是为8 h e 0㊂正如有键按下,通码就被发往计算机一样,只要键一释放,断码就会被发送㊂每个键都有它自己唯一的通码,也都有唯一的断码㊂幸运的是你不用总是通过查表来找出按键的断码,在笔记16基于E P M240的入门实验204通码和断码之间存在着必然的联系㊂多数第二套断码有2字节长,它们的第1个字节是8 h f0;第2个字节是这个键的通码㊂扩展按键的断码通常有3个字节,它们前2个字节是8 h e0㊁8 h f0,最后1个字节是这个按键的通码㊂下面举个实例进行说明㊂通码和断码是以什么样的序列发送到计算机,从而使得字符G 出现在字符显示框的呢?因为这是一个大写字母,需要依次发生下面的事件:按下S h i f t键,按下G键,释放G键,释放S h i f t键㊂与这些时间相关的扫描码如下:S h i f t键的通码 8 h12 ㊂G键的通码 8 h34 ,G键的断码 8 h f08 h34 ,S h i f t键的断码 8 h f08 h12 ㊂因此发送到计算机的数据应该是:8 h128 h348 h f08 h348 h f08 h12㊂第二套键盘扫描码以及工程源代码参考配套光盘㊂如图5.17所示,P S/2接口P I N1和P I N5连接到C P L D的I/O口,C P L D只要根据这两个接口的一定时序关系进行解码即可㊂图5.17P S/2接口如果是第1次接触P S/2协议的朋友,上面这些说明可能还不足以深入认识P S/2接口,但是边练边学,遇到不明白的再回头找资料也是一个不错的学习手段㊂下面要开始动手实践了,我们要做的是一个相对比较容易的实验,达到入门的目的即可,有兴趣的朋友可以在这个基础上继续更深入的研究㊂该实验要实现C P L D通过P S/2接收键盘的数据,然后把接收到的大写字母A~Z的键值转换成相应的A S C I I码,再通过串口传送给P C机;只要字母按键被按下,就能在串口调试助手里显示相应字母㊂顶层模块的接口定义如表5.13所列㊂表5.13P S/2键盘解码实验接口定义信号名称方向描述c l k i n p u t时钟信号,50MH zr s t_n i n p u t复位信号,低电平有效p s2k_c l k i n p u t P S/2接口时钟信号信号名称方向描述p s2k_d a t a i n p u t P S/2接口数据信号r s232_t x o u t p u t R S232发送数据信号笔记16 基于E P M 240的入门实验205如图5.18所示,除了顶层模块(p s 2_k e y ),3个底层模块分别为P S /2传输处理模块(p s 2s c a n )㊁串口传输模块(m y _u a r t _t x )以及串口波特率选择模块(s pe e d _s e l e c t )㊂图5.18 P S /2接口R T L 视图该代码下载完成后,接上P S /2键盘(注意:P S /2一般不支持热拔插,最好C P L D 下载后在掉电状态下插入P S /2键盘,然后上电),随后打开串口调试助手,如果按下键盘上A~Z 任意键,串口调试助手即可显示相应字母㊂十、I 2C 通信实验做本实验前,希望大家能先对I 2C 协议有足够的了解,最好是以前用C 语言或者汇编做过I 2C 通信的实验㊂如果对I 2C 不是很熟悉,那么建议先去看A T 24C X X 的d a t a s h e e t,周立功翻译的中文版也可以,但是最好是去看看官方英文版本的d a t a s h e e t,毕竟那才是最权威的参考资料㊂首先来简单回顾一下基于A T 24C 02的I 2C通信协议㊂如图5.19和图5.20所示,分别是该实验中要涉及的单字节写时序和随机读时序㊂图5.19 单字节写时序I 2C 通信中只涉及两条信号线,即时钟线S C L 和数据线SD A ㊂时钟线为高电平时均可锁存数据,即时钟线上升沿和下降沿之间㊂当时钟线S C L 为高电平时,如果把数据线S D A 从高笔记16 基于E P M 240的入门实验206图5.20 随机读时序电平拉到低电平,则表示通信开始;如果把数据线S D A 从低电平拉到高电平,则表示通信结束㊂器件地址(D E V I C E A D D R E S S )的定义如图5.21所示㊂最低位(L S B )R /W 表示读或者写状态,1表示读,0表示写㊂图5.21 器件地址字节定义该工程的接口定义如表5.14所列㊂表5.14 I 2C 通信实验接口定义信号名称方 向描 述c l ki n p u t 时钟信号,50MH z r s t _n i n p u t 复位信号,低电平有效s w 1i n p u t 按键1,低电平有效㊂按下执行写入操作s w 2i n pu t 按键2,低电平有效㊂按下执行读操作s c lo u t p u t A T 24C 02的时钟端口信号名称方 向描 述s d ai n o u tA T 24C 02的数据端口s m _c s 1_n o u t p u t 数码管1片选信号,低电平有效s m _c s 2_n o u t p u t 数码管2片选信号,低电平有效s m _d b [6:0]o u t pu t 数码管段选信号(不包括小数点)代码中分了两个模块,i i c _c o m 模块除了执行与I 2C 通信有关的代码设计外,还执行按键检测;而l e d _s e g 7模块只是驱动数码管显示从A T 24C 02指定地址读出的数据㊂对于这个通信过程,内部使用了一段式状态机进行设计,如图5.22所示㊂i i c _c o m 模块中设置了两个按键S W 1和S W 2,当S W 1按下的时候执行写入操作,当S W 2按下的时候执行读出操作㊂代码中有几个宏定义:笔记16 基于EP M 240的入门实验207图5.22 I 2C 通信状态机`d e f i n eD E V I C E _R E A D8ʎb 1010_0001//被寻址器件地址(读操作)`d e f i n e D E V I C E _W R I T E 8ʎb 1010_0000//被寻址器件地址(写操作)`d e f i n e W R I T E _D A T A 8ʎb 1101_0001//写入E E P R O M 的数据`d e f i n eB Y T E _A D D R8ʎb 0000_0011//写入/读出E E P R O M 的地址寄存器把代码烧入C P L D 中,此时数码管显示00,因为我们的显示值初始化时是d i s _d a t a =8 h 00㊂按下S W 2执行读操作,此时数码管显示的数据是E E P R OM 在地址存放的数据㊂先后按下S W 1和S W 2键,数码管显示的数据是代码中设置的WR I T E _D A T A 值㊂十一㊁S R A M 读/写实验S R AM 芯片时序操作大同小异,在这里总结一些它们共性的东西,也提一些用V e r i l o g 简单地快速操作S R AM 的技巧㊂这里就以本实验使用的I S 62L V 25670U 为例进行说明,其引脚定义如表5.15所列㊂表5.15 S R A M 引脚定义序 号引 脚描 述1A 0~A 14地址输入2C E n芯片使能输入,低有效3O E n输出使能输入,低有效4W E n写使能输入,低有效序 号引 脚描 述5I /O 0~I /O 7数据输入/输出6V C C电源7G N D数字地在硬件连接的时候,很多人喜欢直接把输出使能信号O E n 和片选信号C E n 接地,这样一来不仅节省了处理器和S R AM 连接的引脚数,而且在读/写S R AM 的时候只要对写使能信号W E n 操作就可以了,简化了代码部分㊂S R AM 接口硬件原理图如图5.23所示㊂因为在硬件上已经把C E n 和O E n 拉低了,所以在不进行写S R AM 的时候,实际上。
PLC控制步进电机的实例(图与程序)·采用绝对位置控制指令(DRVA),大致阐述FX1S控制步进电机的方法。
由于水平有限,本实例采用非专业述语论述,请勿引用。
·FX系列PLC单元能同时输出两组100KHZ脉冲,是低成本控制伺服与步进电机的较好选择!·PLS+,PLS-为步进驱动器的脉冲信号端子,DIR+,DIR-为步进驱动器的方向信号端子。
·所谓绝对位置控制(DRVA),就是指定要走到距离原点的位置,原点位置数据存放于32位寄存器D8140里。
当机械位于我们设定的原点位置时用程序把D8140的值清零,也就确定了原点的位置。
·实例动作方式:X0闭合动作到A点停止,X1闭合动作到B点停止,接线图与动作位置示例如左图(距离用脉冲数表示)。
·程序如下图:(此程序只为说明用,实用需改善。
)·说明:·在原点时将D8140的值清零(本程序中没有做此功能)·32位寄存器D8140是存放Y0的输出脉冲数,正转时增加,反转时减少。
当正转动作到A点时,D8140的值是3000。
此时闭合X1,机械反转动作到B点,也就是-3000的位置。
D8140的值就是-3000。
·当机械从A点向B点动作过程中,X1断开(如在C点断开)则D8140的值就是200,此时再闭合X0,机械正转动作到A点停止。
·当机械停在A点时,再闭合X0,因为机械已经在距离原点3000的位置上,故而机械没有动作!·把程序中的绝对位置指令(DRVA)换成相对位置指令(DRVI):·当机械在B点时(假设此时D8140的值是-3000)闭合X0,则机械正转3000个脉冲停止,也就是停在了原点。
D8140的值为0·当机械在B点时(假设此时D8140的值是-3000)闭合X1,则机械反转3000个脉冲停止,也就是停在了左边距离B点3000的位置(图中未画出),D8140的值为-6000。
第1章 EPM240-CPLD实验板1.1 概述学习单片机、CPLD其实关键是实践,从51入门是个好选择,但不要停留在起点,学单片机方法得当是瞬间的事!但用好,就不好说了,一辈子都要努力随着产品控制技术的进步,CPLD与单片机的联系越来越密切,学会灵活应用CPLD已经作为我们工程技术人员的基本要求,抓紧时间学习吧,面对复杂的任务您就能应对自如,您的未来将更美好。
CPLD 开发板EMP240 是一套基于Altera MAX II240 芯片的学习开发平台,我们为用户提供了丰富的板载资源及例子程序(Verilog和VHDL),很容易实现产品的直接应用及再次开发。
本开发板供CPLD编程初学者学习使用,也可作为系统板嵌入到用户的产品供用户进行二次开发以便缩短产品开发周期,同时也可以作为毕业设计的开发平台,让您轻轻松松做好您的毕业设计,因为我们附带了众多功能实现的源代码,我们还将无偿提供板载资源的的资料,来提高您毕业的创新性,您的肯定就是我们最好的褒奖。
开发板提供丰富的接口资源和实例程序。
从易到难,一步步引导用户学习开发。
开发实例有VHDL和Verilog两个版本,同时还包括详细的使用手册和丰富的配套经典学习资料,非常适合CPLD,FPGA,VHDL,Verilog HDL开发学习者使用。
让用户理论和实际相结合,合理安排学习开发时间。
详细的说明文档,包括原理图讲解,实验操作及现象说明,QuartusII软件使用指导书,以及入门操作指导视频。
本开发板供CPLD编程初学者学习使用,也可作为系统板嵌入到用户的产品供用户进行二次开发以便缩短产品开发周期,同时也可以作为毕业设计的开发平台,让您轻轻松松做好您的毕业设计。
1.2 实验板的基本结构实验板是由美国ALTERA公司MAXII系列器件中的EPM240T100C5芯片以及可供设计者选择的丰富的外围接口器件组成。
EPM240T100C5芯片采用20MHz的石英晶体振荡器作为主时钟信号源。
VHDL硬件程序设计实验报告一.实验题目VHDL硬件程序设计二.实验目的了解掌握针对具体硬件的VHDL设计,以及怎样把设计下载到可编程器件中去。
三.实验原理设计并编写一个加减法计数器,并设置引脚,可将程序下载到编程器件。
四.实验内容本实验以一个加减法计数器的设计为例,实现加减法计数的功能。
已知某开发板使用了Altera公司MAX Ⅱ系列的CPLD芯片EPM240T100C5,与本实验相关的主要元器件的电路连接图如图一所示(本实验中黄色LED与绿色LED未用到),要实现的加减法计数器主要功能可描述为:拨码开关的3号键实现加法和减法功能的切换,计数器状态通过4个红色LED实时显示。
如控制拨码开关的1号键,使rst复位端置低,则LED全部熄灭。
如控制拨码开关的1、2号键,使rst复位端置高,en使能端置低,则LED会停止到当前的计数状态。
图一:本实验相关的主要元器件的电路连接图我们主要使用以下几组端口:1. 三个控制端口:1)、rst复位控制,低电平有效;2)、en使能控制,高电平有效;3)、up加/减控制,高电平加法,低电平减法。
这三个端口分别与拨码开关的1、2、3号键位连接(即芯片EPM240T100C5的39、38、37号引脚分别连接节点SW1、SW2、SW3)。
2. 四个计数器输出端口:1)、sum[0..2]为计数输出,分别与红色LED RED1、RED2、RED3连接,由芯片EPM240T100C5的69~67号引脚进行控制;2)、cout为进位输出,连接到RED4上,由芯片EPM240T100C5的66号引脚控制。
3. 一个外部时钟输入端口(芯片EPM240T100C5的14号引脚),本实验所用外部时钟为50MHz。
4. 红色信号选择线(芯片EPM240T100C5的72号引脚)。
五.实验步骤1.建立新工程,在新工程向导中设置工程目录、工程名、顶层设计实体名,并选择本实验中所使用的芯片;2.新建VHDL设计文件,输入程序,完成后进行全编译,通过Tools->Netlist viewers->RTL viewer观察综合出的电路;3.选择工具栏中的Pin Planner按钮(也可在菜单Assignments中选择),对引脚进行分配;4.引脚分配完成后再次进行全编译,点击工具栏中的Programmer按钮进行(也可在Tools 菜单中选择)下载。
EPM240开发板例程--交通灯--**************库定义、包定义********************LIBRARY ieee;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;--******************实体定义***********************ENTITY jtd ISPORT(clk : in STD_LOGIC;--时钟输入rst : in STD_LOGIC;--复位键row : out STD_LOGIC_VECTOR(3 downto 0);--输出组控制r,y,g,bell : out STD_LOGIC);END jtd;--******************构造体定义*********************ARCHITECTURE led OF jtd IS--纵向路口控制灯为row1和row3;横向路口控制灯为row2和row4constant yellow_time: integer:=2;--路口的黄灯维持秒数constant green_time: integer:=10;--路口的绿灯和红灯维持秒数signal p : integer range 0 to 3;--扫描计数器signal f : integer range 0 to 3;--状态控制寄存器signal clk_500 : std_logic;--扫描时钟signal clk_1h : std_logic;--1s时钟signal r0,y0,g0 : std_logic;--纵向路口控制信号signal r1,y1,g1 : std_logic;--横向路口控制信号BEGINbell<='0';--*************500Hz分频程序********************process(clk)variable cnt1 : integer range 0 to 200;variable cnt2 : integer range 0 to 250;beginif clk'event and clk='1' thenif cnt1=200 thencnt1:=0;if cnt2=250 thencnt2:=0;clk_500<=not clk_500;elsecnt2:=cnt2+1;end if;elsecnt1:=cnt1+1;end if;end if;end process;--***********1Hz分频程序和扫描信号产生******************** process(clk_500)variable cnt1 : integer range 0 to 250;beginif clk_500'event and clk_500='1' thenif(p=3)thenp<=0;elsep<=p+1;end if;if cnt1=250 thencnt1:=0;clk_1h<=not clk_1h;elsecnt1:=cnt1+1;end if;end if;end process;--************交通灯状态控制进程********************* process(rst,clk_1h,clk_500)variable load0,load1 : integer;beginif rst='0' then--复位信号f<=0;load0:=green_time;load1:=green_time;r0<='0';y0<='0';g0<='1';r1<='1';y1<='0';g1<='0';elsif clk_1h'event and clk_1h='1' thencase f iswhen 0=>if load0=0 then --纵向绿灯load0:=yellow_time;f<=1;elseload0:=load0-1;r0<='0';y0<='0';g0<='1';r1<='1';y1<='0';g1<='0';end if;when 1=>if load0=0 then --纵向黄灯load1:=yellow_time;f<=2;elseload0:=load0-1;r0<='0';y0<='1';g0<='0';r1<='1';y1<='0';g1<='0';end if;when 2=>if load1=0 then --横向黄灯load1:=green_time;f<=3;elseload1:=load1-1;r0<='1';y0<='0';g0<='0';r1<='0';y1<='1';g1<='0';end if;when 3=>if load1=0 then --横向绿灯load0:=green_time;f<=0;elseload1:=load1-1;r0<='1';y0<='0';g0<='0';r1<='0';y1<='0';g1<='1';end if;when others=>r0<='1';y0<='0';g0<='0';r1<='1';y1<='0';g1<='0';end case;end if;end process;--*************交通灯扫描进程*************************process(p)begincase p iswhen 0=>row<="1110";r<=r0;y<=y0;g<=g0;when 1=>row<="1101";r<=r1;y<=y1;g<=g1;when 2=>row<="1011";r<=r0;y<=y0;g<=g0;when 3=>row<="0111";r<=r1;y<=y1;g<=g1;end case;end process;end led;。
1、供电电路在直流电源回路中,负载的变化会引起电源噪声。
例如在数字电路中,当电路从一个状态转换为另一种状态时,就会在电源线上产生一个很大的尖峰电流,形成瞬变的噪声电压。
配置去耦电容可以抑制因负载变化而产生的噪声,是印制电路板的可靠性设计的一种常规做法.。
一般在电源部分都采用大电容与小电容并联接在电源两端的,这样对高频和低频都有一定抑制作用。
00IC-EPM240开发板既可以使用独立的5V/1A开关电源供电,也可以使用USB线直接供电,并增加电源控制开关,使用方便。
电路部分的1117输出所接的滤波电容不能省略,这样更好的保证电压稳定。
2、复位电路一个芯片,尤其是可编程芯片,通常在上电的瞬间需要一个短暂的时间进行内部参数的初始化,这个时候芯片无法立即进入工作状态。
通常称上电初始化这些工作为复位,完成这个功能的电路称之为复位电路。
00IC-EPM240开发板使用的是低电平复位,即平时复位信号为高电平,RESET按键按下后产生低电平。
3、晶振电路晶振是为电路提供频率基准的元器件,通常分成有源晶振和无源晶振两个大类,无源晶振需要芯片内部有振荡器,并且晶振的信号电压根据起振电路而定,允许不同的电压,但无源晶振通常信号质量和精度较差,需要精确匹配外围电路(电感、电容、电阻等),如需更换晶振时要同时更换外围的电路。
有源晶振不需要芯片的内部振荡器,可以提供高精度的频率基准,信号质量也较无源晶振要好。
00IC-EPM240开发板使用50MHz的有源贴片晶振作为板子工作的时钟输入。
4、8位LED灯电路发光二极管,通常称为LED,可以不夸张的说在几乎任何一个电子设备中都可以看到它的存在。
大家看看自己的电脑,那些电源或硬盘的指示灯就是发光二极管。
我们可以将发光二极管理解成一个微小的电灯泡,但它没有灯丝,仅仅靠半导体里面的电子移动而使它发光。
00IC-EPM240开发板上8位LED灯的正极通过300欧电阻与EPM240芯片的IO相连,负极直接接地,所以如果要LED灯亮,输出IO电平为高即可点亮。
摘要低成本虚拟数字示波器设计摘要随着电子技术的发展及人们在这方面学习和实践的深入,设计者在实践中所遇到的问题日趋复杂,以致简单仪器已经无法解决。
示波器无疑是解决这些问题的必备仪器,但高昂的价格却限制了它的普及,特别是它在个人用户如从事电子设计的工程师、学生中的普及。
因此如何设计一款低成本的实用的示波器将是本文要探讨的内容。
本文提出了一套完整的虚拟数字示波器硬件设计方案,并最终完成了低成本虚拟数字示波器的设计,制作出虚拟数字示波器工程样机一台。
本数字示波器的带宽为1MHz,采样速度最高20Msa/s,精度8位,能测量0-20Vpp的信号,档位在上位机软件控制下无接触自动切换。
信号采集及存储电路由MSP430F247、EMP240(CPLD)、TLC5510、IS61LV256等组成,在FIFO 逻辑电路控制下自动完成触发电平捕获、数据高速存储、采样停止等。
在MSP430F247控制下,系统完成协议解析、数据的读取、预处理,并最终将数据发送到上位机显示。
与此同时采样的开始与停止,采样的速率和触发门限等均由主控制器MSP430F247控制。
系统具有三种采样方式,能完成毛刺捕获。
测试证明,本设计能满足一般的测量应用。
T I O NL L E CE C OS U Mi目录第一章概述 (1)1.1 工程样机 (1)7.1 部分通道幅频特性测试 (3)第二章系统总体结构及概述 (7)2.1 结构及概述 (7)第三章信号调理电路方案测试论证与设计 (9)3.1器件测试 (9)3.1.1 运放性能测试 (9)3.1.2 继电器性能测试 (13)3.2 耦合 (14)3.3 放大与衰减 (16)3.4 耦合与增益控制 (18)3.5 电平抬升 (19)第四章数据采集与存储 (23)4.1 高速ADC TLC5510 (23)4.1.1 引脚功能描述 (23)4.1.2 功能说明 (24)4.1.3 内部基准 (25)4.2 EPM240 (26)4.3 SRAM IS61LV256 (28)4.4 数据采集与存储 (29)4.4.1 采样时钟控制 (31)4.4.2 高速FIFO的实现 (33)第五章总控制部分 (37)5.1 主控制器概述 (37)5.2 电压档位控制 (39)5.3 时基档位控制 (39)5.4 触发数据传输控制 (40)5.5 与PC机的通信 (42)第六章系统设计中的EMC (45)6.1 接地 (45)6.2 屏蔽 (47)6.3 小结 (48)参考文献 (49)附录 (51)附录1 NE5532幅频特性测试数据 (51)附录2 部分通道幅频特性测试数据 (52)附录3 整机测试 (55)目录ii附录4 硬件电路图 (57)附录5 Bill Of Material For DSO.PCB (59)S U M E C OL L E CT I O N第一章概述1第一章概述1.1 工程样机虚拟数字存储示波器工程样机,如下图:图1.1,工程样机图1.2,待测工程样机硬件电路测试仪器: RIGOL数字信号源DG1022。
BJ-EPM240V2学习板实验说明
1
CPLD 与PC 串口自收发通信
串口通信其实简单实用,这里我就不多说(如果有朋友还对串口通信的协议不是很了解,建议到google 输入“串口通信协议”补补)。
我们的实验要实现的功能如题,就是CPLD 里实现从PC 接收数据,然后把接收到的数据发回去。
使用的是串口UART 协议进行收发数据。
上位机用的是串口
调试助手,如下:
在CPLD 设计中,CPLD 端发送数据的波特率是可选的,有以下几种:9600bps,19200bps,38400bps,57600bps,115200bps 等,这部分在模块speed_select 里,可以根据需要进行设置。
发送的数据帧格式为:1bit 起始位(从高电平到低电平保持一个bit 周期),8bit 数据,1bit 停止位,无校验位。
以下的代码有比较详细的注释,经过下载验证!此外可参考同目录下的myuartverilog 里的工程,打开编译后下载到开发板即可观看实验效果。
具体的实现过程有待大家慢慢消化verilog 代码。
(下载本工程代码后,打开串口调试助手,设置好波特率和CPLD 中的一致,无校验位,8个数据位,1个停止位,然后在发送的字符/数据后的空白栏内输入2位16进制数据,点击手动发送即可看到上方的数据接收区内返回了刚才发送过来的数据)。
BA 179C/07/en/02.98Nr.50088966FlowFit P CPA 240Flow Assembly for pH/Redox SensorsOperating InstructionsHauser+Endress Nothing beatsknow-howQuality made by Endress+HauserISO 9001Table of Contents1General Information (2)1.1Symbols used (2)1.2Unpacking (2)1.3Intended use (2)1.4Safety notes (2)2Description of the Assembly (3)2.1Versions (3)2.2Order code (3)2.3Dimensions (4)2.4Measuring system (8)3Installation (9)3.1Installation of the assembly (9)3.2Installation of electrodes and measuring cables (10)4Maintenance (11)4.1Cleaning (11)4.2Calibration (12)5Accessories (13)5.1Chemoclean spray cleaning system (13)5.2Sonoclean ultrasonic cleaning system (14)5.3Electrolyte reservoir CPY7 (15)6Technical Data (16)7Index...............................................................17xa240e00.chpFlowFit P CPA240Table of Contents Endress+Hauser11General Information1.1Symbols usedWarning:This symbol alerts to hazards which may cause serious injuries as well as damage if ignored.Caution:This symbol alerts to possible mal-functions due to operator error.Note:This symbol indicates important items of information.1.2UnpackingInspect for any damaged packaging ordamaged rm the post office or freight carrier of any damage.Damaged goods must be stored until the matter has been settled.Check that the delivery is complete and agrees with the shipping documents.Check product type and version on the nameplate against your order.The delivery includes:•FlowFit P CPA 240assembly•Operating Instructions BA 179C/07/en.If you have any questions,consult your supplier or Endress +Hauser sales office (see back page of this operating instructions for addresses).1.3Intended useThe FlowFit P CPA 240is intended for the fit-ting of pH,redox or temperature sensors in pi-pes.The assembly version is designed for universal use in drinking water,feedwater and waste water environments and in chemical in-dustry.1.4Safety notesWarning:•The notes and warnings in theseoperating instructions must be strictly adhered to!•Faults on the assembly may onlybe remedied by authorised and properly trained personnel.•If faults cannot be remedied,theassembly must be removed from service and secured to prevent accidentalstart-up.1General Information FlowFit P CPA 2402Endress+Hauser2Description of the Assembly2.1VersionsThe FlowFit P CPA 240flow assembly is available in two material versions (stainless steel and PVDF).For use according to specific customerrequirements,assemblies for installing in pipes with horizontal flow are available withvarious process connections.In addition an assembly is available with an inlet at the bottom and a horizontal outlet.2.2Order codeYou can identify variants by means of the order code on thenameplate.Fig. 2.1Nameplate of CPA 240xa240e02.chpFlowFit P CPA 2402Description of the AssemblyEndress+Hauser 32.3Dimensions2.3.1VersionsFig.2.2Versions of stainless steel assembliesThe protection cover supplied with theassembly is not shown.2Description of the Assembly FlowFit P CPA 2404Endress+HauserFig. 2.3Versions of stainless steel assembliesThe protection cover supplied with the assembly is not shown. xa240e02.chpFlowFit P CPA2402Description of the AssemblyEndress+Hauser52.3.2Sectional diagramsFig.2.5Flange dimensions of stainless steelassemblyFig.2.4Construction of stainless steel assembly(2different versions):-left with ½"NPT-right with DN 25flange 1Electrode holder 2Union nut3Potential matching pin 4Drain screw5Shock protection bolt (1.4401)horizontal flowSCHNITT1.CDRinlet at bottomFig.2.6Sectional drawing of stainless steel version2Description of the Assembly FlowFit P CPA 2406Endress+HauserFig. 2.7Loose flange dimensions of PVDF assemblyFig.2.8Construction of PVDF assembly (2different versions):-left with ½"NPT-right with DN 25flange 1Electrode holder 2Union nut3Potential matching pin 4Drain screwSCHNITT2.CDRinlet at bottomhorizontal flowFig.2.9Sectional drawing of PVDF versionxa240e02.chpFlowFit P CPA 2402Description of the AssemblyEndress+Hauser 72.4Measuring systemA complete measuring system comprises:•the FlowFit P CPA 240flow assembly•maximum 3electrodes from the CPS range of length 120mm and diameter 12mm •pH/redox transmitter (e.g.MyPro CPM 431or Mycom CPM 152)•measuring cable CPK 1,CPK 2or CPK 7(terminated).Optional:•Pt 100temperature sensor•VBA junction box and measuring cable PMK or CYK 71(not terminated)for cable extension.Potential matching cableElectrode cable (e.g. CPK 7)Fig.2.10Complete measuring systemQ Power supply(e.g.230V AC /50Hz)R Output(e.g.0or 4...20mA)2Description of the Assembly FlowFit P CPA 2408Endress+Hauser3Installation3.1Installation of the assemblyThe flow assembly should only be installed in pipes at locations where the pipe cannot run dry.Installation in the by-pass is preferable to installation in the process pipe as the by-pass pipe can be blocked off without interrupting the process.This permits measurement, sampling and maintenance of the electrode without interrupting the process.The drain screw fitted to the flow assembly base permits the connection of outlet or sampling pipes.Warning:•Depressurise the pipe before installing or removing the assembly.•The medium pressure in the pipe must not exceed the maximum permissible flow assembly or electrodepressure.Fig. 3.1Pipe by-passThe pressure build-up necessary to produce flow through the sampling by-pass is produced by a plate orifice in the processpipe.Fig. 3.2Pump by-passThe pressure build-upnecessary to produceflow through thesampling by-pass isproduced by a boosterpump in the processpipe.Fig. 3.3Sampling pipeStub pipe branching offfrom the process pipewithout raising pressure.xa240e03.chpFlowFit P CPA2403InstallationEndress+Hauser93.2Installation of electrodes and measuring cablesNote:•Close off unused electrodepositions with dummy plugs.•2electrodes with KCI fluid andhose connection cannot be installed.•Before screwing in the electrodesinspect seat and cleanliness of the O-ring seal.•Inspect all the O-rings on the flowassembly for damage at regular intervals.•Required mounting clearanceabove protection cover:120mm3Installation FlowFit P CPA 24010Endress+Hauser4MaintenanceElectrode soiling may impair measurement to such an extent that the electrode ceases to function,e.g.due to:•coatings on the pH-sensitive glass membrane→poor response time and low sensitivity or slope.•soiling or blockage of the membrane→poor response time and unstablemeasured values.To ensure reliable measurement clean the electrodes regularly.The frequency and intensity of cleaning depend on the medium to be measured.4.1CleaningClean the electrodes:•before every calibration•regularly during operation,if necessary.Cleaning can be carried out manually or with an automatic cleaning system such as Chemoclean or Sonoclean.Caution:•Do not use abrasive cleaningagents on the electrodes.Thiscould lead to irreparablemalfunctions of the measuringsurfaces.•After cleaning,thoroughly rinsethe whole system with water(if possible,distilled or de-ionised).Any residue of cleaningagents may severely impairmeasurement.•The measuring system must bere-calibrated after each cleaning. Manual cleaningAll parts coming in contact with the medium, such as electrodes or flow assembly,must be cleaned regularly.When an outlet or sampling pipe is installed,rinse the drain on the base of the flow assembly.•Light soiling can be removedwith suitable cleaning agents.•More severe soiling can be removed by brushing carefully with a soft brush and asuitable cleaning agent.•Stubborn dirt may be dissolved by soaking the appropriate parts in the cleaning fluid. Automatic cleaningCyclic automatic cleaning in an installed condition may be carried out by the Chemoclean automatic spray cleaning system.The complete system includes the CYR 10injector box and the CYR20 programmer(see Chapter5,Accessories). Various diluted chemicals or pressurised water may be used as cleaning agents depending on the type of soiling.Use the Sonoclean automatic ultrasonic cleaning system(see Chapter5,Accessories) for automatic cleaning without cleaning agents.Selection of cleaning agentsThe cleaning agent chosen is dependent on the type of soiling.The most frequent type of soiling and the appropriate cleaning agents are listed in the followingtable:xa240e04.chpFlowFit P CPA2404MaintenanceEndress+Hauser114.2CalibrationCareful,regular calibration is essential for reliable,accurate measurement.The calibration intervals depend on the particular application and the required measuring accuracy.The calibration intervals must be individually determined in practice for each application. To begin with it is advisable to calibrate more often,e.g.once a week to get to know the operating behaviour.Calibration steps:•Depressurise the assembly(vent using the drain plug or drain valve,if necessary).•Remove electrode holder by taking off protective cover and unscrewing union nut.•Clean electrodes and assembly(see Chapter4.1).Automatic cleaning:cleanbefore removing electrode holder.•Check electrodes for mechanical damage.•Fill calibration vessel with buffer solution.•Calibrate measuring system according to instructions for measuring instrument.•Rinse electrode with water.•Refit electrode holder in assembly.Caution:•Do not allow electrodes to stand indistilled water.•Do not allow electrodes to standdry.4Maintenance FlowFit P CPA240 12Endress+Hauser5AccessoriesThe following accessories can be ordered separately:•Chemoclean spray cleaning system comprising:–CYR 10injector(see Technical InformationTI 046C/07/en,Order No.50014223)–CYR 20programmer(see Technical InformationTI 046C/07/en,Order No.50014223)•Sonoclean ultrasonic cleaning system •KCI reservoir CPY 7with CPY 4electrolyte solution (see Operating Instructions BA 128C/07/d-e,Order No.50069155)•CPY 2calibration solution •Calibrating vessel.The following spare parts can be reordered:•O-ring sets5.1Chemoclean spray cleaning systemThe Chemoclean spray cleaning system is used for automatic electrode cleaning.The best cleaning results can be obtained by using the correct cleaning agent.Thisensures the correct functioning of the sensor.The Chemoclean cleaning system for the CPA 240flow assembly comprises:•Chemoclean spray head (shipment due in 07/98)•cleaning injector CYR 10•cleaning control system (e.g.CYR 20programmer or CPM 152transmitter)xa240e05.chpFlowFit P CPA 2405AccessoriesEndress+Hauser 135.2Sonoclean ultrasonic cleaning systemThe Sonoclean ultrasonic cleaning system is used to clean electrodes without the use of cleaning agents.Dirt particles adhering to the electrodes are loosened by pressure fluctuations produced by ultrasound.5Accessories FlowFit P CPA240 14Endress+Hauser5.3Electrolyte reservoir CPY 7 The CPY7electrolyte reservoir is used to supply fluid-filled electrodes.When a reference electrode is installed,the reservoir vessel can be used as an electrolyte bridge. The reservoir is filled with KCI electrolyte solution CPY4.For more information,see Operating Instructions CPY7(BA128C/07/d-e).Fig. 5.1Electrolyte reservoir CPY7 (wall-mounted version)Q ValveR Dummy plug;reference electrodepositionS Dummy plug;manometer positionT Filling markU Securing nut forelectrolyte vesselV Hose couplingxa240e05.chpFlowFit P CPA2405AccessoriesEndress+Hauser156Technical DataNote:The operating limits of the system are determined by the operating limits of the individual components used (assembly,sensors,cables,accessories,etc.).Fig.6.1Pressure /temperaturediagramSubject to modifications6Technical Data FlowFit P CPA 24016Endress+Hauser7IndexA Accessories..............13-15 Automatic cleaning (11)BBy-Pass (9)C Calibration (12)Calibration intervals (12)Chemoclean..............11,13 Cleaning (11)Cleaning agents (11)DDamaged goods (2)Delivery (2)Description of the assembly.......3-8 Dimensions. (4)Drain screw...............6-9 Dummy plug. (10)EElectrode holder (6)Electrodes (8)Electrolyte reservoir (15)Electrolyte solution (15)F Flange..................6-7 Flow assembly (9)GGeneral information (2)I Installation................9-10 Installation of electrodes. (10)Installation of measuring cables (10)Installation of the assembly (9)Intended use (2)JJunction box................8MMaintenance.............11-12Manual cleaning (11)Materials (16)Measuring cable (8)Measuring system (8)Medium pressure (9)NNameplate (3)OO-ring sets (13)Operating pressure (16)Operating temperature (16)Order code (3)Outlet pipe...............9,11PPotential matching cable (8)Potential matching pin..........6-7 Pressure. (9)Process (9)Process connection (16)Protection cover.............8,10SSafety notes (2)Sampling pipe (9)Sectional drawing.............6-7Shock protection bolt (6)Soiling (11)Sonoclean...............11,14Spare parts (13)Spray cleaning system........11,13 Symbols. (2)TTechnical data (16)Temperature sensor (8)Transmitter (8)UUltrasonic cleaning system......11,14 Unpacking (2)Use (2)VVersions..................3-4WWeight (16)xa240e07.chpCPA2407 IndexEndress+Hauser17EuropeAustria❑Endress+Hauser Ges.m.b.H.WienT el.(01)88056-0,Fax(01)88056-35 BelarusBelorgsintezMinskT el.(0172)263166,Fax(0172)263111 Belgium/Luxembourg❑Endress+Hauser S.A./N.V.BrusselsT el.(02)2480600,Fax(02)2480553 BulgariaINTERTECH-AUTOMA TIONSofiaT el.(02)652809,Fax(02)652809Croatia❑Endress+Hauser GmbH+Co.ZagrebT el.(01)6601418,Fax(01)6601418 CyprusI+G Electrical Services Co.Ltd.NicosiaT el.(02)484788,Fax(02)484690Czech Republic❑Endress+Hauser GmbH+Co.PrahaT el.(026)6784200,Fax(026)6784179 Denmark❑Endress+Hauser A/SSøborgT el.(31)673122,Fax(31)673045EstoniaElvi-AquaT artuT el.(7)422726,Fax(7)422727Finland❑Endress+Hauser OyEspooT el.(90)8596155,Fax(90)8596055 France❑Endress+HauserHuningueT el.89696768,Fax89694802Germany❑Endress+Hauser Meßtechnik GmbH+Co. Weil am RheinT el.(07621)975-01,Fax(07621)975-555 Great Britain❑Endress+Hauser Ltd.ManchesterT el.(0161)2865000,Fax(0161)9981841 GreeceI& G Building Services Automation S.A. AthensT el.(01)9241500,Fax(01)9221714 HungaryMile Ipari-ElektroBudapestT el.(01)2615535,Fax(01)2615535 IcelandVatnshreinsun HFReykjavikT el.(05)889616,Fax(05)889613IrelandFlomeaco Company Ltd.KildareT el.(045)868615,Fax(045)868182Italy❑Endress+Hauser Italia S.p.A.Cernusco s/N MilanoT el.(02)92106421,Fax(02)92107153 JugoslaviaMeris d.o.o.BeogradT el.(11)4442966,Fax(11)430043LatviaRaita Ltd.RigaT el.(02)254795,Fax(02)7258933 LithuaniaAgava Ltd.KaunasT el.(07)202410,Fax(07)207414Netherland❑Endress+Hauser B.V.NaardenT el.(035)6958611,Fax(035)6958825Norway❑Endress+Hauser A/ST ranbyT el.(032)851085,Fax(032)851112Poland❑Endress+Hauser Polska Sp.z o.o.WarszawyT el.(022)7201090,Fax(022)7201085PortugalT ecnisis-T ecnica de Sistemas IndustriaisLinda-a-VelhaT el.(01)4172637,Fax(01)4185278RomaniaRomconseng SRLBucharestT el.(01)4101634,Fax(01)4101634Russia❑Endress+Hauser Moscow OfficeMoscowT el.,Fax:see Endress+Hauser GmbH+Co.Instruments InternationalSlovak RepublicT ranscom T echnik s.r.o.BratislavaT el.(7)5213161,Fax(7)5213181Slovenia❑Endress+Hauser D.O.O.LjubljanaT el.(061)1592217,Fax(061)1592298Spain❑Endress+Hauser S.A.BarcelonaT el.(93)4803366,Fax(93)4733839Sweden❑Endress+Hauser ABSollentunaT el.(08)6261600,Fax(08)6269477Switzerland❑Endress+Hauser AGReinach/BL1T el.(061)7156222,Fax(061)7111650TurkeyIntek Endüstriyel Ölcüve Kontrol SistemleriIstanbulT el.(0212)2751355,Fax(0212)2662775UkraineIndustria UkraïnaKievT el.(44)2685213,Fax(44)2685213AfricaEgyptAnasiaHeliopolis/CairoT el.(02)4179007,Fax(02)4179008MoroccoOussama S.A.CasablancaT el.(02)241338,Fax(02)402657NigeriaJ F T echnical Invest.Nig.Ltd.LagosT el.(1)62234546,Fax(1)62234548South Africa❑Endress+Hauser Pty.Ltd.SandtonT el.(011)4441386,Fax(011)4441977TunisiaControle,Maintenance et RegulationT unisT el.(01)793077,Fax(01)788595AmericaArgentina❑Endress+Hauser Argentina S.A.Buenos AiresT el.(01)5238008,Fax(01)5220546BoliviaT ritec S.R.L.CochabambaT el.(042)56993,Fax(042)50981Brazil❑Samson Endress+Hauser Ltda.Sao PauloT el.(011)5363455,Fax(011)5363067Canada❑Endress+Hauser Ltd.Burlington,OntarioT el.(905)6819292,Fax(905)6819444ChileDIN Instrumentos Ltda.SantiagoT el.(02)2050100,Fax(02)2258139ColombiaColsein Ltd.Bogota D.C.T el.(01)2367659,Fax(01)6107868Costa RicaEURO-TEC S.A.San JoseT el.2961542,Fax2961542EcuadorInsetec Cia.Ltda.QuitoT el.(02)251242,Fax(02)461833GuatemalaACISA Automatizacion Y Control Industrial S.A.Ciudad de Guatemala,C.A.T el.(02)345985,Fax(02)327431Mexico❑Endress+Hauser I.I.Mexico CityT el.(5)5689658,Fax(5)5684183ParaguayIncoel S.R.L.AsuncionT el.(021)213989,Fax(021)26583UruguayCircular S.A.MontevideoT el.(02)925785,Fax(02)929151USA❑Endress+Hauser Inc.Greenwood,IndianaT el.(317)535-7138,Fax(317)535-1489VenezuelaH.Z.Instrumentos C.A.CaracasT el.(02)9798813,Fax(02)9799608AsiaChina❑Endress+Hauser ShanghaiInstrumentation Co.Ltd.ShanghaiT el.(021)64646700,Fax(021)64747860❑Endress+Hauser Beijing OfficeBeijingT el.(010)68344058,Fax:(010)68344068Hong Kong❑Endress+Hauser(H.K.)Ltd.Hong KongT el.25283120,Fax28654171India❑Endress+Hauser India Branch OfficeMumbaiT el.(022)6045578,Fax(022)6040211IndonesiaPT Grama BazitaJakartaT el.(21)7975083,Fax(21)7975089Japan❑Sakura Endress Co.,Ltd.T okyoT el.(0422)540611,Fax(0422)550275Malaysia❑Endress+Hauser(M)Sdn.Bhd.Petaling Jaya,Selangor Darul EhsanT el.(03)7334848,Fax(03)7338800PakistanSpeedy AutomationKarachiT el.(021)7722953,Fax(021)7736884Papua-NeuguineaSBS Electrical Pty LimitedPort MoresbyT el.53251188,Fax53259556PhilippinesBrenton Industries Inc.Makati Metro ManilaT el.(2)8430661-5,Fax(2)8175739Singapore❑Endress+Hauser(S.E.A.)Pte.,Ltd.SingaporeT el.4688222,Fax4666848South Korea❑Endress+Hauser(Korea)Co.,Ltd.SeoulT el.(02)6587200,Fax(02)6592838TaiwanKingjarl CorporationT aipei R.O.C.T el.(02)7183938,Fax(02)7134190Thailand❑Endress+Hauser Ltd.BangkokT el.(2)9967811-20,Fax(2)9967810VietnamT an Viet Bao Co.Ltd.Ho Chi Minh CityT el.(08)8335225,Fax(08)8335227IranT elephone T echnical Services Co.Ltd.T ehranT el.(021)8746750,Fax(021)8737295IsraelInstrumetrics Industrial Control Ltd.T el-AvivT el.(03)6480205,Fax(03)6471992JordanA.P.Parpas Engineering S.A.AmmanT el.(06)5539283,Fax(06)5539205Kingdom of Saudi ArabiaAnasiaJeddahT el.(02)6710014,Fax(02)6725929KuwaitKuwait Maritime &Mercantile Co.K.S.C.SafatT el.2434752,Fax2441486LebanonNabil IbrahimJbeilT el.(3)254051,Fax(9)944080Sultanate of OmanMustafa&Jawad Sience&Industry Co.L.L.C.RuwiT el.602009,Fax607066United Arab EmiratesDescon T rading EST.DubaiT el.(04)359522,Fax(04)359617YemenY emen Company for Ghee and Soap IndustryT aizT el.(04)230664,Fax(04)212338Australia+ New ZealandAustraliaGEC Alsthom L TD.SydneyT el.(02)96450777,Fax(02)97437035New ZealandEMC Industrial InstrumentationAucklandT el.(09)4449229,Fax(09)4441145All other countries❑Endress+Hauser GmbH+Co.Instruments InternationalD-Weil am RheinGermanyT el.(07621)975-02,Fax(07621)975345BA179C/07/en/02.98 Printed in Germany/ CV5。
General OperationADSP-BF54x Blackfin Processor Hardware ReferenceOnce the Logical Channel (from which data will be received) has been defined, the DMA channel can be configured. The MXVR has 8 DMA channels dedicated for synchronous data transmission and reception. All 8 DMA channels have the same functionality and any number of them can be used simultaneously. In order to configure DMA channel x for recep-tion, the bits in the MXVR_DMAx_CONFIG register should be programmed. On the first write to the MXVR_DMAx_CONFIG , the MDMAENx bit should be set to 0, the DDx bit should be set to 1 to receive data, the LCHANx field should be programmed with the defined Logical Channel number, the BITSWAPENx and BYSWAPENx bits should be set to select any data manipula-tion prior to transmission, the MFLOWx should be programmed, and the synchronous packet configuration bits should be programmed if a syn-chronous packet flow mode is selected.Then the address of the data buffer in L1 or L2 memory should be pro-grammed to the MXVR_DMAx_START_ADDR register and the MXVR_DMAx_COUNT register should be programmed based on the flow mode selected.Once the Logical Channel has been defined, the configuration bits, the start address, and the transfer count have been written, the DMA channel can be enabled. The DMA channel is enabled by writing theMXVR_DMAx_CONFIG again with the configuration bits programmed to the same values as before and with the MDMAENx now set to 1.When the DMA channel is enabled to receive in Stop Mode, the DMA channel waits until the start of the next frame so that the data is always frame aligned. Then the DMA channel starts receiving the data on the physical channels defined in the associated Logical Channel and starts writing the data to L1 memory starting at the address specified in MXVR_DMAx_START_ADDR . Once the DMA channel has written half of the total number of bytes specified in MXVR_DMAx_COUNT , the HDONEx status bit is set to 1. The DMA continues to receive the data and write the data to L1 memory until the total number of bytes specified in MXVR_DMAx_COUNT has been written. At that point, the DONEx status bit is set to 1 and theGeneral OperationADSP-BF54x Blackfin Processor Hardware Referencespecified by MXVR_DMAx_START_ADDR and the fourth packet will be written to the address specified by MXVR_DMAx_START_ADDR + MXVR_DMAx_COUNT , and so on. The DMA channel continues to operate in this fashion indefi-nitely until it is manually disabled. See DMA channel 4 in Listing 29-1 on page 29-130 for an example of a DMA channel being programmed for Synchronous Packet-Fixed Count Mode.A DMA channel can be disabled manually at any time by writing the MDMAEN bit to 0; however, the DMA channel will not actually stop until the start of the next frame. The associated DMAACITVEx bit in the MXVR_STATE_1 register can be monitored to see when the DMA channel has actually stopped. Note that as a general rule, the Logical Channel definition in the MXVR_SYNC_LCHAN_x registers should not be changed while a DMA channel which uses that Logical Channel is active.Listing 29-1. Synchronous Packet Modes Code Example// Declare and define the sync packet transmit buffers.U8_t tx_sync_pkt_vc[16] = {0xF0,0xF1,0xF2,0xF3,0xAA,0x00,0x0C,0xAA,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};U8_t tx_sync_pkt_ss[16] = {0xF0,0xF1,0xF2,0xF3,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0xFF,0xFF,0xFF,0xFF};U8_t tx_sync_pkt_fc[20] = {0xFF,0xFF,0xFF,0xFF,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F};// Declare the sync packet receive buffers.。
Asynchronous Packet TransmissionThe MXVR Asynchronous Packet Transmit Buffer (APTB) is an area of memory that is allocated to hold an asynchronous packet to be transmit-ted. The APTB must reside in L1 or L2 memory and the starting address of the APTB is programmed in the MXVR_APTB_START_ADDR register. Enough memory should be allocated for the largest asynchronous packet to be transmitted. The largest allowed asynchronous packet data length is 1014 bytes and with 12 bytes for packet priority, addressing, and length fields, the APTB must be 1026 bytes.Once the asynchronous packet to be transmitted is written to the APTB, the STARTAP bit in the MXVR_AP_CTL register should be set to 1 to trigger the MXVR to begin arbitration and transmission of the asynchronous packet. At that point the MXVR will start DMA’ing the asynchronous packet from the APTB into the MXVR and will begin arbitrating for the asynchronous packet channel.While the MXVR is still arbitrating for the asynchronous packet channel, the asynchronous packet transmission can be cancelled by setting theCANCELAP bit to 1 in the MXVR_AP_CTL register. Once the STARTAP bit is set to 1, the APTB cannot be written until either the asynchronous packet is successfully sent or is successfully cancelled.The asynchronous packet is said to be successfully sent if the MXVR wins the arbitration for the asynchronous packet channel, and transmits the packet. Once the packet is transmitted, the MXVR will set the APTS bit in the MXVR_INT_STAT_1 register and an interrupt can be conditionallygenerated.The asynchronous packet is said to be successfully cancelled if theCANCELAP bit is set to 1 prior to the MXVR winning arbitration for the asynchronous packet channel. If the asynchronous packet is successfully cancelled, the MXVR will set the APTC bit in the MXVR_INT_STAT_1 register and an interrupt can conditionally be generated.determined by the AP Length field that was received in the packet. The AP Length field is a length in quadlets and the value includes 6 bytes for the AP Source Address (2 bytes) and AP CRC (4 bytes). The address offset of the final byte of the AP Data field is calculated as follows:Control Message TransmissionThe MXVR Control Message Transmit Buffer (CMTB ) is an area of mem-ory that is allocated to hold a control message to be transmitted. The CMTB must reside in L1 or L2 memory and the starting address of the CMTB is programmed in the MXVR_CMTB_START_ADDR register. The CMTB must be allocated 26 bytes.Once the control message to be transmitted is written to the CMTB , the Start Control Message Transmission (STARTCM ) bit in the MXVR_CM_CTL reg-ister should be set to 1 to trigger the MXVR to begin arbitration and transmission of the control message. At that point the MXVR will DMA the control message from the CMTB into the MXVR and will begin arbitrat-ing for the control message channel.Table 29-14. Asynchronous Packet Receive Buffer Entry Field Offsets APRB Entry Address OffsetsField Name 0x00AP Destination Address (Upper Byte)0x01AP Destination Address (Lower Byte)0x02AP Length (in quadlets)0x03Reserved 0x04AP Source Address (Upper Byte)0x05AP Source Address (Lower Byte)0x06 to AP Data End Offset AP DataAP Data End Offset 4AP Length ⨯()3+=。
1、数字系统0-1实验
本实验主要是加强用户对数字系统中0、1的直观认识。
8位拨码开关输入,对应输出到8位LED灯,拨码拨上到ON,对应位LED灯亮,拨码拨下,对应位LED灯熄灭。
2、BCD码转换实验
SW1-SW4输入4位二进制数,8位LED显示转换后的BCD码(LED灭表示0,亮表示1)。
3、全加器实验
利用拨码输入任意两个3位二进制数,相加结果以十进制数输出到数码管上。
4、减法器实验
SW1-SW6输入任意两个3位二进制数作为减数与被减数,结果以十进制数输出到数码管上。
5、两位并行乘法器
输入任意两个2位2进制数,相乘后结果以十进制数输出到数码管上。
6、优先编码器实验
同时输入8位2进制数请求信号,优先编码器响应优先级别最高的请求信号,并以3位2进制数输出到LED灯上。
7、3-8译码器实验
三个输入端共有8种状态组合(000—111),8个输出信号分别对应8种状态,译码器可译出当前输入状态,并对应输出到8位LED灯上(该位LED灯亮)。
8、4位比较器实验
输入为2路4位二进制数A和B,A、B比较结果输出到数码管上,如果A大,数码管显示A,B大则显示B,相等则显示0。
9、多路选择器实验
A为选择信号,B、C是两路3位二进制数,当A为1是输出数据为B,为0时输出数据为C。
10、高/低分频器实验
将50MHz的时钟输入信号进行不同倍数的分频,分频后将频率高的输出到LED22上,频率低的输出到LED15上,用户可以对比两个LED闪烁的频率。
11、同步计数器实验
本程序实现的是16进制的同步计数器功能,计数器状态在数码管上显示,分别对应0-F。
12、8态有限状态机实验
数字系统中任何时序电路都可以表示为有限状态机(FSM)。
本程序实现的是一个8态的状态机转换实验,数码管实时显示当前状态。
13、LED流水灯实验
8位LED灯D15-D22逐个亮一次,然后全部亮,再从D22-D15依次熄灭。
14、加减可控状态灯实验
拨码开关1控制状态灯是否工作(1工作,0不工作),拨码开关2控制加减法计数(1加法,0减法),4位LED灯以二进制数循环变换显示状态。
15、8位数据数码管显示实验
8位二进制数据输入,EPM240读入数据后以十进制数输出到数码管,任意一位数据发生变化,数码管亦随之对应变化。
16、4位数码管动态扫描实验
以动态扫描方式在4位数码管“同时”显示0123,帮助用户了解数码管动态显示的方法。
17、9999计数器数码管动态显示
程序设计了一个4位十进制计数器,以递增的方式在4位数码管上向上计数动态循环显示
0000-0001-0002.…..9999-0000-0001-……
18、矩阵键盘实验
程序对3×4矩阵键盘扫描,有任意键按下,立即读出其键值,并在数码管上显示相应数值。
19、按键顺/倒序计数实验
程序对外部触发事件(按键按下)进行计数统计,结果输出到数码管显示;其中K1为顺序累加计数,K2为倒计数。
20、8×8LED点阵动态显示实验
利用行列动态扫描的方法,在8×8LED点阵上显示一个“电”字。
21、8×8LED点阵汉字滚动实验
程序利用矩阵编码的方法,在8×8LED点阵上显示一个汉字,并从由到左连续滚动显示。
22、模拟交通灯实验
程序实现的是模拟十字路口的交通灯自动控制系统。
开始南北走向通行,即南北绿灯亮、东西红灯亮;然后转到南北黄灯亮、东西红灯亮以及南北红灯亮、东西黄灯亮的延时状态;最后进入东西走向通行,即东西绿灯亮,南北红灯亮。
如此反复运行。
23、蜂鸣器发声实验
通过向蜂鸣器发送一定频率的方波可以使蜂鸣器发出相应的音调,本实验通过设计一个状态机和分频器使蜂鸣器发出“多来咪发梭拉西多”的循环音调。
24、蜂鸣器播放音乐实验
本程序通过蜂鸣器发声原理让蜂鸣器播放具有一定节奏的音乐,如“北国风光”等,并在8*8LED点阵上动态显示播放时的音律。
25、PS/2键盘实验
程序读取外接键盘的键值,在数码管上显示当前被按下的键盘的键值。
26、串口通信实验
开发板向PC串口发送数据,打开串口调试助手可显示发送的数据。
27、LCD1602字符液晶显示实验
程序运行后,在1602字符液晶上显示两行“Welcome ^_^”,并从右到左动态循环显示。