最新日志

发表于:2008-8-11 10:42:06
标签:无标签

0

基于FPGA的抢答器设计

 

    抢答器在各类竞赛中的必备设备,有单路输入的,也有组输入方式,本设计以FPGA 为基础设计了有三组输入(每组三人),具有抢答计时控制,能够对各抢答小组成绩进行相应加减操作的通用型抢答器;现行的抢答器中主要有两种:小规模数字逻辑芯片译码器和触发器来做,另外一种用单片机来做;小规模数字逻辑电路比较复杂,用单片机来做随着抢答组数的增加有时候存在I/O 口不足的情况;本设计采用FPGA 来做增强了时序控制的灵活性,同时由于FPGA 的I/O 端口资源丰富,可以在本设计基础上稍加修改可以设计具有多组输入的抢答器。

功能描述
     本文设计了一个通用型电子抢答器:三个参赛队,每个队有三个成员,各自可手动按按钮申请抢答权;回到正确加1 分,回答错误减1 分,违规抢答减1分,不抢答不加分不扣分;用4 位LED 的左边2 位显示抢答组号及抢答计时时间,右边2 位显示相应组的成绩。
抢答器具体功能如下:
1、可同时进行三组每个小组三人的抢答, 用9 个按钮Group1_1,Group1_2,Group1_3,Group2_1,Group2_2,Group2_3,Group3_1,Group3_2,Group3_3 表示;
2、设置一个抢答控制开关Start,该开关由主持人控制;只有当主持人按下开始键才能抢答;在按开始按钮前抢答属于违规;
3、抢答器具有定时抢答功能,且一次抢答的时间设定为30 秒。当主持人启动"开始"键后,用4 位LED 数码管左边两位显示30s 的倒计时;同时红色LED灯亮,表明可以抢答。
4、抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的组号,并在4 位LED 数码管的左边两位显示,同时用一个绿色LED 指示是否有选手抢答,如果是违规抢答还能用选手蜂鸣器报警提示。抢答实行优先锁存,优先抢答选手的相应组号和成绩一直保持到下一轮抢答开始。
5、参赛选手在设定的时间内进行抢答,抢答有效,数码管左边两位显示 ”FX”,如果抢答违规则显示 ”XF”(其中X 表示组号1~3),并保持到下一轮抢答。如果抢答延迟时间已到,无人抢答,本次抢答无效,系统回到主持人按开始前的等待状态,数码管上左边两位显示“FF”。
6、当抢答有效后,主持人可以根据抢答选手回答问题正确与否对选手相应组数的成绩进行加减分操作,抢答违规也能减分操作,用4 位LED 数码管右边两位显示相应组数的成绩。(注各组初始成绩为10 分)

设计架构
    本文以FPGA 为基础设计的电子抢答器,根据设计功能要求,改设计主要包括抢答输入键盘,数码管显示,报警及FPGA 最小系统。抢答器结构简图如图1所示。
抢答器结构图 
1、FPGA 最小系统电路:FPGA 正常工作时的基本电路,由时钟和复位电路组成。
2、键盘输入电路:用3×3 矩阵键盘组成3 个组共9 个人的抢答按钮。同时包括Start, Add, Sub 三个由主持人控制的单独按钮。
3、显示模块:用移位寄存器74HC164 驱动4 位共阴数码管显示;数码管要显示的数据通过74HC164 串行数据端口输入。
4、报警及相关信息显示:蜂鸣器电路和LED 灯显示相关状态信息指示电路。

各模块详细描述
1、FPGA 与各个模块的接口
    本文以XC3S400 为基础设计的电子抢答器,抢答器实际上是一个人机接口的一个智能设备,该设计中用到的FPGA 外部I/O 口及其与外部各个模块连接的网络标识如图2 所示。
 
图2.FPGA 的IO 接口
2、按键模块
    由于按键是机械的动作,按键存在电平抖动,为了消除按键抖动引起的干扰,需要等按键值达到稳定状态时才读取按键的值,也就是说要当按键按下一段时间后,才读取按键值;本设计中抢答开始键(Start)、抢答后各组成绩的加(Add)和减(Sub)按键是以单键的形式输入,按键延迟时间为20ms,对于抢答组的按键是用3×3 阵列键盘实现,row=3’b001 以周期为5.08ms 进行循环左移扫描,扫描完三行的周期为15.24ms,这个就是说只有当两个按键之间的时间间隔在15.24ms 之内时才有可能存在一个按钮在比另一个按钮先按,而响应后者;实际操作中,两人按键之间的间隔大于这个时间间隔,因此,不会出现错误响应。同时每个按键后的延迟等待125.76ms 后此按键值才有效;经过实际测试,键盘具有消抖功能,能够正确检测按键值。按键电路图如图3 所示。
点击看大图 
图3.按键电路
图注: Group1_1,Group1_2,Group1_3 分别表示第一参赛小组的三个成员的按钮, 依次类推Group2_1,Group2_2,Group2_3 和 Group1_1,Group1_2,Group1_3 分别代表第二和第三参赛小组的三个成员;Start、Add、Sub 分别代表抢答开始按键、对小组成绩的加操作和减操作按钮!
3、显示模块
    显示模块由4 位的LED 数码管显示抢答组数、是否违规抢答信息、按下抢答键后的抢答时间、各组所得分数等信息;其中数码管左边2 位显示抢答组号及抢答计时时间,右边2 位显示相应组的成绩。数码管的驱动电路(译码电路)用两片74164 控制;电路图如图4 所示。
    显示数据信息通过74164 的串行译码传送到数码管对应段,对应位显示;对于数码管显示的时序特别要注意:数码管是采用动态扫描方式显示,所有位扫描显示一次的频率一定要大于相应位数据改变的频率;同时当数码管对于数据改变的同时一定要把相应数据送到数码管进行显示,即数据改变和数据显示要同步;此设计中4 位数码管动态扫描频率位190Hz,而数码管要显示的抢答组数、抢答组的成绩等信息的变化频率都是秒级,即几秒钟或者几分钟变化一次,满足数码管显示要求。
点击看大图 
图4.显示电路
注:数码管为共阴数码管,其中pin6,pin8,pin9,pin12 依次为位码,其余为段码;
4、时钟复位
    此模块用于生成FPGA 系统时钟和复位电路,采用有源晶振和低电平复位。系统时钟采用50MHz,能够满足电路设计要求,电路如图5 所示。
 
图5.时钟复位电路
5、报警模块
    报警主要用于响应当没有按开始键之前违规抢答信号;即当违规时蜂鸣器响;同时还增加了一个红色用于显示当按下开始键的信号;即当主持人按下开始按键时,红色LED 灯亮;同时用一个绿色LED 灯指示有选手按抢答按钮,选手按键抢答,绿色LED 闪烁一次。电路图如图6 所示。
 
图6.报警和指示

软件代码描述
    软件设计主要采用verilog HDL 语言进行设计,采用状态机对抢答器的各个过程进行控制,设计中采用了层次化和模块化的思想,即顶层模块只有一个控制抢答器的主状态机和模块例化,然后分别用子模块实现数码管显示,成绩多路选择器,成绩的处理模块,按下抢答开始键后的延迟等待模块,按键模块等。程序流程图如图7 所示。
点击看大图 
图7.程序流程图
图注: 显示“FF+成绩”中FF 表示无效状态,成绩表示上一次抢答的那个小组的成绩;显示“FX+成绩”表示抢答小组答题完并进行评分操作后的组号和成绩;显示“XF+成绩”表示违规抢答的那个小组组号及减1分后的成绩信息(X 表示1,2,3)。这里“+”是为了区分组号和成绩信息,数码管并不显示加号,下同。
    用Verilog HDL 分别编写各个模块,然后在ISE 环境下运行程序,调试成功。最后生成的顶层模块的方块图如图8 所示。
 
图8.顶层模块图
图注:Line(2:0)和row(2:0)分别表示参赛小组按键的输入阵列信号和输出扫描阵列信号;start_key,add_key, sub_key,分别代表抢答开始命令,对各组成绩的加、减操作命令;dp,error,push_key 分别表示开始键按下后的信号,违规抢答信号以及参赛组有人按键的响应信号;hc_cp,hc_si 表示显示译码芯片74HC164 的串行时钟和数据信号。

问题与解决
1、状态机问题
    在整体调试的时候,当主持人按开始按钮后,程序就死在那里,不能接收抢答信息,由于抢答键盘已单独调试成功,因此怀疑是控制抢答过程的状态机除了问题,指示进入开始状态的红色LED灯一直亮着,说明程序的确死在开始状态。再次综合的过程中发现警告提示:状态机的状态量的赋值错误,把二进制标识“b”误写为“h”,这样由于状态机数据宽度小于时间数据数据长度,自动取较小位数据;如state_start = 4'b0010误写为state_start = 4'h0010,实际就是state_start = 4’b0000,这肯定与前面状态冲突;同时调试过程中也遇到过复位时没有把状态机复位到初始状态的情况。经过此次设计,体会认识到状态机在实际控制中的重要性,以后设计中要学会看综合布线过程中警告信息。
2、信号同步的问题
    在抢答器按下开始键后有一个等待抢答30s 的延迟时间,当30s 完成后如果三个小组都没有人按抢答键,那么此次比赛抢答无效,系统自动回到主持人按开始前的系统等待状态;当计时完成30s 后生成一个高电平的脉冲信号(pulse),由于此脉冲信号高电平持续时间是整个系统的系统时钟(clk),这个时钟周期小于状态机的时钟周期(clk_4),直接用状态机的时钟是检测不到此脉冲信号,需要把此脉冲信号同步到与状态机时钟同步。
    采用的方法是:首先用一个锁存器(pulse_reg)锁存此脉冲信号(锁存器时钟也为系统时钟),通过锁存器的输出值和原脉冲信号寄存器值就可以检测到脉冲由低电平0 到高电平1 的跳变沿,同样用一个与系统时钟同步的锁存器(flag)锁存这个跳变沿,当出现这个跳变沿时flag=1;而为了让状态机时钟(clk_4)检测到flag 信号,同时要在状态机时钟检测到后要把flag 清零,为下一次检测作准备,这时可以当状态机时钟(clk_4)检测到flag=1’b1 后,同时生成一个flag的清零信号(flag_rst)flag_rst=1’b1;当flag_rst 为1 时把flag 清零。

调试信号同步的部分程序如下:
reg flag_rst; //生成flag_rst 信号
always @ (posedge clk_4 or negedge rst_n)
begin
  if(!rst_n)
    begin
      flag_rst <= 1'b0;
    end
  else
    begin
    if(flag == 1'b0)
      flag_rst <= 1'b0;
    else
      begin
      flag_rst <= 1’b1;
      end
   end
end
always @ (posedge clk)
begin
  pulse_reg <= pulse;
end
reg flag; //flag 用来检测pulse 上升沿
always @ (posedge clk)
begin
  if(!rst_n)
    flag <= 1'b0;
  else
    begin
    if((pulse_reg == 1'b0)&&(pulse == 1'b1))
      flag <= 1'b1;
    else if(flag_rst == 1'b1)
      flag <= 1'b0;
   end
end
reg flag_reg; //生成与clk_4 同步的用于检测脉冲上升沿信号的flag 信号
always @ (posedge clk_4)
begin
  flag_reg <= flag;
end

    用modesim6.0 仿真波形如下:
点击看大图 
图9.信号的同步的仿真波形
    从仿真波形中可以看出当pulse 高电平时的下一个时钟flag = 1’b1;为了让时钟clk_4 能够检测到flag = 1’b1,就让flag 一直保存到clk_4 上升沿出现,然后在clk_4 上升沿把flag 的复位信号flag_rst 置1;然后flag, flag_rst都清零。改变pulse 脉冲出现的时间或者clk_4 的频率都能检测到pulse 的高电平。经过信号同步后,状态机能够检测抢答计时完30s 后生成的一个脉冲信号然后回到初状态。
    时序设计是数字电路电路的主要工作,在设计中一定要明白信号如何传递,在何时赋值,何时信号值需要改变等,这样才能更好的设计。在需要改变寄存器值的时刻没有对寄存器进行操作,会造成结果的错误。

设计结果
    根据抢答器功能要求,规划程序包括的子模块,并编写Verilog 代码,在硬件电路上调试运行成功。
    操作过程:开始时对,整个系统复位(默认每组成绩为10 分),数码管显示“FF+10”。在主持人发出开始抢答的Start 之后,参赛队员就可以按自己前面的抢答按钮,同时用数码管左边两位计时抢答时间30s,如果在30s 内各组都无人抢答,则此次抢答无效,系统自动回到开始前的初状态(数码管显示“FF+成绩”),等待下一次操作;主持人可根据回答争取与否,以及是否违规抢答,决定加减分(Add 为加分控制,Sub 为减分控制),加减操作后系统又回到开始前的等待状态。设计中,哪个组抢答,就显示哪个组的信息。如果抢答没有违规(按开始后抢答)则显示器左边两位显示“FX”;反之,则显示“XF”,X 代表组号1,2,3。按照操作方法,以第1 组抢答为例在VX_SP306 开发平台上运行看看数码管显示及整个过程:
1、在系统复位后显示“FF+10”;
2、等待主持人按开始状态;
3、主持人按开始按钮前第1 组抢答,显示“1F+10”,减1 分操作后显示“1F+09”;回到步骤2;
4、主持人按开始按钮后,显示“30+10”;30 每秒钟减1 直到00;
5、在30s 内第1 组抢答,显示“F1+10”,主持人根据回答情况进行加、减分操作,显示“F1+分数”;然后回到步骤2;
6、如果在30s 内没有人抢答,显示“FF+10”,回到步骤2。

点击此处查看原文 >>

系统分类: CPLD/FPGA   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(59)
发表于:2008-8-11 10:39:10
标签:无标签

0

基于AT89S52型单片机的红外无线PPM发射机设计

基于AT89S52型单片机的红外无线

1 引言

     在工业和生活环境中,便携式信息终端设备的出现加速了无线数字通信线路和局域网的引进,然而,由于无线电的局限性,使它在无线高速数据链路应用方面受阻。在此情况下红外(IR)无线光通信得到人们的重视[1]。作为一种室内短距离通信的传输介质,IR具有胜过无线电的显著优点:IR有巨大的带宽且不需许可证,可以进行高速数据传输;IR不穿透墙壁,因而消除了在不同房间进行通信时可能带来的干扰,而且通信时不容易被侦听,提高了通信的安全性;IR探测器的尺寸比IR无的波长大得多,避免了多径衰落;IR可强度调制,IR通信设备比无线电通信设备要便宜简单得多。

     对室内无线电局域网,要求红外数据链路的峰值-平均光功率比高,高峰值功率可提高系统的灵敏度,低平均功率可满足人眼安全和低功耗的要求,脉冲位置调制(PPM)通信方式就符合这些要求,目前,PPM已被IEEE无列入无线局域网IEEE802.11标准。用纯硬件设计实现PPM光发射机是比较复杂和困难的,笔者利用功能强大的AT89S52型单片机和编程软件VC++设计了一种基于计算机串口和的红外无线PPM发射机。AT89S52通过串口从计算机获取数据,编码得到脉冲宽度调制(PWM)信号后通过输出端口输出,输出的PWM信号经过波形转换电路得到PPM电脉冲信号,再通过光源驱动电路转换为PPM光脉冲信号,从而完成红外无线PPM发射机的设计。

     2 PPM信号格式

      PPM采用断续的周期性光脉冲作为载波,调制信号受到信源二进制符号地控制,脉冲的时间位置随之发生变化而传递信息,PPM信号结构如图1所示,在数字PPM通信中,同步是至关重要的。为了实现帧同步,应在传送信息帧之前发送一次帧同步头,为接收端提供同步信息,同时在信息帧的前面和后面分别安排2个标志帧以表示信息的开始和结束,这样接收机捕获到同步信号和起始标志符后,开始解调随后的脉冲信号,直到接收到结束标志,表明数据接收完毕。

      每一个信息帧又分为信息段和保护段(由光源和信道的特性决定),共M个时隙,每个时隙的宽度为Ts,其中前Q个时隙为信息段TQ=(QTs),后D个时隙为保护段TD=(DTs)。对Q元PPM,平均光功率为Pa,光脉冲峰值功率为QPa,又一帧表示log2Q位的二进制信息,因此数据传输速率R为

     R="log"2Q/T=log2Q/MTs=Log2Q/(Q+D)Tsbit/s (1)

     其中,T为一帧的时间长度。

     在T不变的条件下,PPM的传信率和峰值功率随时隙数Q增大,但是Q值过大,也就是一帧分成的时隙数过多,会给信号的传输和解调带来困难,信息和Q值成对数关系,例如,当Q=256时,一个脉冲表示8比特信息,而Q=512表示9比特信息,由此可见,Q较大时,脉冲携带的信息量随Q值的增大并没有明显增加,综合考虑以上情况和实际设计需要,笔者采用Q=16的PPM调制方式,时隙宽度Ts设为15μs。

     3 AT89S52的特点

      AT89S52是一种低功耗、高性能CMOS 8位单片机,片内含8KB ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器、该器件采用Atmel公司的高密度、非易失性存储技术制造、兼容标准MCS-51指令系统及80C51引脚结构。片内集成了通用的8位CPU和ISP Flash为存储单元,可为众多嵌入式控制应用系统提供高灵活、高性价比的解决方案。

       TA89S52具有如下特点:40个引脚,8KB Flash片内程序存储器,256 Bytes的随机存储数据存储器(RAM),32个外部双向输入/输出(I/O)口,1个6向量2级中断结构;3个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路和片内时钟振荡器。

       此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置的省电模式。在空闲模式下,CPU暂停工作,而RAM、定时计数器、串行口、外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,禁止电路的其他功能直至外中断激活或硬件复位。同时该电路还具有PDIP、TQFP和PLCC等封装形式,以适应不同产品的设计要求。

     4 硬件设计

      红外线PPM发射机由AT89S52型单片机与计算机的串行通信电路,PWM到PPM波形转换电路和光源驱动电路构成,其系统结构框

     4.1 串行通信电路

      为了能使单片机和计算机通信,必须使其遵循相同的通信协议,AT89C51的串行口输入/输出为TTL逻辑电平,抗干扰性较差,而计算机的串行接口是符合EIA RS-232C规范的外部总线标准接口,具有较强的抗干扰性,为了解决电平不一致的矛盾,该系统设计选用了Maxim公司的MAX232型电平转换器实现电平转换,MAX232属于通用串行接收/发送驱动器,其外围电路非常简单,只需外接4个0.1μF的电容器。

      AT89S52具有串行通信接口(SCI),SCI是能与计算机等外设通信的全双工异步系统,AT89S52与计算机采用RS-232C接口方式,这种方式下,SCI采用标准的不归零(NRZ)格式,开始是1位起始位,以逻辑“0”表示,接着是8位数据位,最后是1位停止位,以逻辑“1”表示故一次传送据长度为10比特,计算机发送数据,AT89S52接收数据,AT89S52将接收到的数据进行PWM编码,得到帧周期固定,而脉冲宽度随外部信号不断变化的PWM信号,然后通过P1.0端口输出。

      4.2 波形转换电路

      经过单片机编码输出的PWM信号经过一个下降沿触发器即可得到PPM脉冲信号,波形转换如图3所示[7]。当P1.0端口输出的信号由高电平变为低电平时,触发器的输出端产生所需的PPM脉冲信号,其脉冲宽度由外部定时电路决定

     4.3 驱动电路

      对于无线红外通信系统来说,半导体发光二极管(LED)是可以选用的最佳光源,笔者采用带有温度补偿特性的射极耦合LED驱动电路[8],该电路看上去像一个线性差分放大器,实际上是一个电流开关电路,PPM信号加在驱动电路的输入端,当PPM信号的电位低于设定的参考电位时,LED无脉冲电流通过,LED不发光;反之,脉冲电流通过LED而使LED发光。如图4所示,注入电流IF相等的条件下,LED的输出光功率P随着温度的上升而下降,所以设计中采用温度补偿电路进行温度补偿,当温度升高时,LED的注入电流也随之增加,从而补偿LED的功率变化。

     5 软件设计

     5.1 计算机软件编程

     计算机的主要作用是通过串口传送源数据给单片机。

     利用Visual C++编制串行通信程序一般有3种方法:调用Microsoft Win32应用程序接口(API)提供的串行通信函数,利用VC++的MFC类库函数实现;用Active X通信控件(MSComm)开发串口通信程序,笔者利用VC++提供的MSComm控件来实现计算机与单片机之间的串行通信,利用VC++的通信控件MSComm进行软件设计只需对串口进行简单的设置即可。程序实现非常简单,结构清晰,在Windows环境下,串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。

     5.2 单片机软件编程

      单片机的主要作用是从发送端(计算机)接收数据,并对接收到的数据进行PWM编码,然后通过输出端口输出,单片机部分的编程主要由串口初始化子函数,接收数据子函数和PWM信号发送子函数组成。

     5.2.1 串口初始化子函数

     使用串口之前,应动其进行初始化,初始化程序如下:

     5.2.2 接收数据子函数

      接收数据流程如图5所示,程序如下:

     5.2.3 PWM发送信号子函数

      PWM信号发送包括发送PWM编码后的同步头、起始标志符、接收的数据和结束标志符、下面重点讨论对接收的数据进行编码及发送,其流程如图6所示,程序如下:

6 结束语

      红外通信为构建高速宽带室内无线局域网提供了新的选择。PPM的脉冲峰值功率与平均功率之比很高,可以有效减小平均辐射功率和提高接收灵敏度,笔者设计的红外无线PPM发射机利用单片机实现PPM调制,具有电路结构简单、调试容易、可靠性高、精度高、成本低和功耗低的优点,由于设计中只采用了单只红外LED作为光源,输出功率不大,而且受辐射角的限制,通信具有方向性,可以考虑采用多只红外LED构成发射阵列来增加发射功率和辐射范围。

PPM发射机设计

点击此处查看原文 >>

系统分类: 模拟技术   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(78)
发表于:2008-7-18 15:06:09
标签:无标签

0

实现USB2.0高速数据传输的问题探讨

 

摘要:针对USB2.0高速数据传输在实际应用中存在的具体问题,深入分析了诸如协议开销、带宽分配、工作环境、主机硬件结构和操作系统配置、设备驱动程序等影响速度提高的种种因素。同时重点阐述了USB2.0设备接口中端点FIFO通道和GPIF通用可编程接口的关键作用。并利用USB2.0控制芯片EZ-USB FX2进行了不同模式下数据传输的实验.最后在此基础上指出解决高速数据传输问题的几条对策。

1 引言
    USB(Universal Serial Bus,通用串行总线)是计算机与其外设连接的一种新型接口技术。尽管在2000年4月27日发布的USB2.0规范中最高传输速度已经达到了480 Mbps(即60 MB/s)。但是很多USB2.0设备在实际工作时的数据传输速度却与此相差甚远。本文作者曾为此利用测试软件BusHound对诸如闪存盘、mp3、移动硬盘等典型USB2.0设备进行速度测试,其结果由表1给出。
 
    由于USB2.0的实际数据传输速度与PC主机和USB设备的诸多因素有关,且其中任一个因素都有可能成为影响数据传输速度的瓶颈。因此对此进一步地深入探讨是很有必要的。

2 影响USB2.0数据传输速度的因素分析
(1)USB通信协议的开销
    在USB数据通信的过程中,总线上传输的并不只是真正需要的数据信息,还要包括诸如同步信号、类型标识、校验码、握手信号等各种协议信息。因此实际数据传输的速率根本没有可能达到总线传输的极限速度480 Mbps。且对不同的传输类型,存在不同的协议开销。如在USB1.1协议下规定的每毫秒1帧中,对一个设备的中断传输只能进行一次,考虑中断传输的数据包为64Byte,故可算出这种传输的最大速度只有64 kB/s。
    对USB2.0的情况,由于采用了微帧结构,每帧分为8个微帧,且中断传输在每个微帧下可以传输3个数据包,而每包的数据也增加到1024个字节,故可以算出USB2.0的中断传输的最大速度提高到8×3×1024 B/ms=24 MB/s。尽管与USB1.1的64 KB/s相比提高很大,却仍与480
Mbp(60 MB/s)相差很远。
 
    如表2所示.USB2.0中最能体现高速传输特点的应属批量传输类型,其53.24 MB/s的理论传输速度上限可以说比较接近60MB/s的总线速度极限。因此,如果仅从获取最高数据传输的目标出发,应当选用批量传输工作方式。
(2)USB带宽的分配
    USB协议规定。控制传输应确保在低/全速时能够使用10%的带宽,高速时能够使用20%的带宽。而批量传输并没有保留任何带宽。即批量传输只有在控制传输和其它传输不需要使用其带宽的情况下,方能使用剩下的带宽。因此,尽管总线闲置时批量传输可以在一段时间里尽快地传输大量的数据,但总线忙时批量传输就可能工作很慢。
    通常PC主机可能同时使用诸如鼠标、键盘、摄像头、打印机和扫描仪等多种USB设备,它们分别采用不同的传输方式。可以设想.如果开始只有一个设备以批量传输方式独占系统的全部带宽。显然速度会很快(接近53 MB/s)。但如果新插入的若干设备需要使用控制传输全部20%的保留带宽,那么先前设备批量传输的可用带宽就会下降到原先的80%,传输速度可能变为42 MB/s以下。作为一种更极端情况是批量传输设备插入前,已有设备以控制传输方式完全占有了20%的保留带宽.其它设备也以中断或者同步传输方式共同占据了剩下的80%带宽,那么批量传输设备就会因为没有保留带宽,只能处于等待的状态。
    USB的实时传输可以保证传输的速率恒定,而中断传输要求每帧或每个微帧都能为每个设备进行一次数据传输。因此确保主机对设备响应的实时性。然而实时传输和中断传输并不保留带宽。主机只有在总线确实能够分配足够带宽的情况下才会接受设备的通信要求。且实时传输不进行握手包的确认过程,因而不能确保数据传输的正确性。
(3)USB设备的使用环境
    USB的使用环境也是需要考虑的一个重要因素,如果处于一个电磁环境非常复杂的使用场合。不可避免地会受到干扰而产生传输错误。尽管这种错误在大多数通信协议(控制、中断、批量传输)的管理下并不会影响通信的最终结果,但由此引发的重发、等待等纠错工作则会明显地影响数据传输速度.甚至发生堵塞的现象。因此,USB2.0设备和PC主机间最好采用带磁环的USB2.0专用连接线,且其长度最好限制在3 m-5 m 的范围内,这样受到的电磁干扰和噪声影响较小。纠错重发的概率也较小,数据传输的速度也就显得较快。
(4)PC主机本身的硬件结构与操作系统
    PC主板的数据吞吐量高度取决于USB2.0主控制器在主板芯片组结构中的位置。在用来管理I/O设备和控制I/O总线通信的南桥芯片的_T作模式下. 当USB2.0主控制器挂在PCI总线时,虽然PCI总线132 MB/s的带宽处理USB1.1下12 Mbps的传输速度没有问题,但对USB2.0高速模式就会受到PCI总线带宽的限制。因此。较新的主板将USB2.0控制器与南桥芯片直接连接。从而消除PCI总线的带宽瓶颈。
    目前PC机上大规模使用的Windows操作系统是非实时操作系统。存数据传输时,操作系统不能实时响应数据传输的请求。虽然从Windows98开始. 以及随后的Windows Me和Windows2000增加了对USB设备类的支持,但版本仍然是USB1.1。如需使用USB2.0设备,还需安装相应的USB2.0驱动程序。目前只有Windows XP的Service Pack1才能完全支持USB2.0。
(5)USB设备驱动程序
    USB设备的驱动可以分为设备驱动程序、USB总线驱动程序、USB控制器驱动程序三个部分。如图1所示。应用程序通过使用Windows API函数与USB设备驱动程序对话。USB设备驱动程序通过调用驱动程序栈完成对设备的接口操作、数据读写和管理电源等功能。USB总线驱动程序(USBD.sys)和USB2.0控制器驱动程序由操作系统提供。设备驱动通过构造URB(USB Request Block),并传给总线驱动程序来完成与总
线驱动程序的通信。通常情况下设备驱动程序需要频繁产生中断。而设备驱动程序系统优先级并不高,当计算机负荷较重或者有其它优先级较高的中断发生时,它的中断得不到处理而需要等待。如果设备驱动程序向USB总线传递URB的时候设置一个较大的缓冲区.便可减少了中断的频率而减少等待时间。从而提高数据传输的速度。此外,调整驱动程序中诸如命令排队策略、改变请求包大小等措施,也能对USB的数据传输速度产生一定的影响。

(6)USB设备的硬件与固件
    由于USB2.0的速度实在太快。一般单片机通过CPU的数据读写处理方式常常成为限制数据传输速度的瓶颈。因此为了实现USB设备与PC主机之间的高速传输,必须采用专门的接口电路和固件程序。

3 通用USB2.0设备控制器的高速工作模式
    EZ-USB FX2是一种支持USB2.0的微控制器,FX2内部集成了USB2.0收发器、智能串行接口引擎(SIE)、增强型8051内核、8.5 KB的RAM、4 KB的FIFO存储器、I/O端口、I2C总线接口、8/16位数据总线和通用可编程接口(GPIF)等,最终通过通用的标准ATA接口连接外部电路,以适应不同的用户功能。
    这里串行接口引擎SIE负责完成诸如串行数据的编码和解码,差错控制,位填充等支持USB底层协议的功能。数据传输则通常需要微处理器通过固件访问接口芯片中的端点FIFO, 也需要微处理器通过固件访问外围设备的接口电路,正如图2中标识符② 和③所示的数据传输路线。然而,这种工作方式会因微处理器固件程序执行较慢而限制数据传输速率的提高,且在高速时显得格外突出。
  
    为了适应USB2.0高速数据传输的需要.这里采用了一种特殊的数据传输模式,如图2中标识符①所示的数据传输路线,此时无需执行内部8051固件程序便可直接实现端点FIFO与外部的数据交换。从而很好地解决了普通微处理器转发方式造成的带宽瓶颈。
    实际电路结构中,4 KByte的端点FIFO可以通过固件程序配置成多重缓冲的形式,这种结构可有效地提高USB带宽的性能,平滑带宽的抖动,并减少通信等待的时间。具体控制分为从机模式和主机模式两种。主机模式是指利用FX2内部集成的通用可编程接口GPIF(General Programmable Interface)产生时序逻辑信号来控制与外围设备的数据传输。从机模式则指利用外部信号控制端点FIFO与外设之间的数据传输。
    GPIF可包含8个时序状态,支持控制输出线CTL、状态输入线RDY和地址信号ADR,构造的各种时序逻辑信号可以有效地支持16位数据总线的双向操作。描述GPIF波形的数组称为波形描述符,可以在设备初始化时同固件程序一起下载.GPIF将根据其表达的时序逻辑关系,执行相应的控制作用。
    FX2的固件程序是设备运行的核心.担负着处理USB驱动程序的请求,执行应用程序的控制指令,完成数据的读写操作,以及根据需要启动GPIF周期.实现端点FIFO与外界的数据交换等功能。固件程序并不经常参与数据传输的具体过程.通常仅起检测、判断的作用,决定GPIF的工作在何时开始.何时停止。

4 USB2.0高速数据传输的速度测试
    USB2,0速度测试的基本方法是通过PC主机上的测试软件,记录该PC主机与某USB设备在固定时间内交换的数据信息流量,进而算出实际使用中的数据传输速度。这里采用的速度测试软件是美国Perisoft公司提供的一种名为Bus Hound的总线分析测试软件.其界面如图3所示.这个软件在运行中不会对设备的工作产生任何影响。用该软件来观察USB设备工作情况,可以直接读取当前USB设备输入输出的数据量大小、数据传输速度和设备属性等信息。
    本文为USB2.0实际传输速度的具体测试流程如图4所示。利用EZ-USB FX2控制芯片开发的USB2.0设备通用控制器和一台PC机。用一根大约2 m长的带磁环的USB2.0专用连接线连接在一起。PC机的硬件配置是Intel P4 2.4 GHz的CPU,基于Inte1848芯片组的主板,主板上带有支持高速模式的USB2.0接口,256 M DDR333内存. 操作系统是WindowsXP SP1。主机设备驱动程序采用Cypress公司为FX2系列控制器提供的通用驱动程序ezusb.sys。其中数据缓冲区设为64KB,应用程序用VC编写,其作用是向USB接口控制器发送需要数据上传的指令和上传数据量的大小后。将数据从USB设备读到PC之中。作为USB设备的FX2的固件程序在Keil集成开发环境中开发。应用GPIF进行逻辑控制.并将所用端点6设为单区容量大小为512Byte的4重缓冲模式。固件程序的功能只是将来自并行数据线的数据源源不断地送往USB的端点FIFO中。
 
    在固件程序设计中首先采用图2中标识符②和③所示的数据传输模式.测得的数据传输速度一直在200 KB/s以下。然后采用图2中标识符①所示的数据传输模式,在实验中让PC主机多次重复采集大量数据。以提高速度测试的准确性。在PC机不接其它USB设备一次采集数据的量为650.2 Mbyte的情况下,USB2.0总线的实际数据传输速度最高达到了25.5 MB/s,即204Mbps。

5 结束语
    综上所述,这里强调几点看法:首先,人们通常所说的480 Mbps是USB2.0总线速度的上限.考虑通信协议的开销后,实际数据的传输速度存理论上最高也只有53 MB/s(426Mbps).实际综合条件下15 MB/s至25 MB/s都可以作为合理的高速目标。其次,为了追求数据的高速传输时应当考虑采用批量方式.但在多设备同时工作的场合考虑实时响应.USB2.0下的中断方式也是不错的选择。再者,USB设备中微处理器转发数据的传统方法不能适应高速数据传输的要求,必须建立USB端点FIFO和应用数据通道之间的直接联系。另外,为了真正实现数据的高速传输.必须综合考虑PC主机本身的软硬件配置、设备驱动程序开发和实际工作环境。

点击此处查看原文 >>

系统分类: 嵌入式   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(114)
发表于:2008-7-18 15:02:43
标签:无标签

0

在单片机上实现USB移动存储

第1章 主要硬件芯片介绍
1.1系统总体设计
   USB主机系统设计是一个软、硬件结合的整体,宏观上主要包括三个层次的设计:USB总线物理层接口设计、USB核心系统设计和USB客户系统设计。总线接口主要处理主机与设备之间的电气及协议层的互连,是信息包进出的物理桥梁;USB核心系统主要管理和协调主机与从机间的逻辑数据传输,解析双方联系的握手协议,是验证信息包的逻辑关卡;客户系统是最终用户直接和USB设备功能交互的逻辑平台,不同的USB设备归属于不同的类,是利用相关的类协议来实现的,所以客户系统驱动程序具有多变性,需要为专门的类定制专门的驱动程序。
    在单片机上实现USB移动存储功能,具体包括USB主机接口的硬件设计和整机USB驱动固件的设计。其中驱动固件的设计具体又包含几个协议的实现:USB1.1控制传输协议、USB BULK传输协议、USB海量存储类协议、UFI磁盘操作命令和FAT文件系统标准等。

1.2硬件设计
1.2.1USB主控制器
    USB主控制器主要是完成底层物理接口设计,是USB系统架构的必要部分,是USB数据包进出的必经通道。本系统采用的USB主机芯片是Cypress公司的SL811HS。Cypress公司是最早从事USB芯片开发的公司之一,其EZ-USB系列芯片在业界有非常好的口碑。SL811HS是当经第一个支持USB 主从机的接口芯片,性能稳定,资料全面。
(1)芯片特性
     SL811HS是自动兼容USB全速或者低速的嵌入式USB主从机的接口芯片,它支持微处理器、微控制器或者DSP的USB接口设计,同时也可以直接连到ISA、PCMICA等其它总线[8],芯片使用标准的USB1.1协议。SL811HS通过内部集成的全/低速传输引擎产生USB串行接口功能,在全速时带宽为12Mbps,低速时为1.5Mbps。芯片支持8位并行数据端口或者I/O口的设计,同时也支持DMA,自动中断检测连接口,可以非常容易地在MCS-51系列微处理器、摩托罗拉微控制器或者其它控制芯片上完成设计。总的来说具有如下特性:

  1. 可在软件控制下,单一地实现主机或者从机功能,28脚PLCC,48脚TQFP封装。
  2. 低速1.5Mbps,高速12Mbps,主从模式下都一样。
  3. 自动检测连接设备是否为高速或者低速。
  4. 支持8位双向并口传输,或者I/O口,DMA传输。
  5. 片上集成SIE和USB传输器。
  6. 片上集成了一个USB根集线器。
  7. 256字节内部SRAM,支持乒乓传输。
  8. 工作频率在12M或者48M,3.3伏供电,最高5伏耐压接口。
  9. 支持总线挂起、唤醒和掉电模式。
  10. 自动产生SOF和循环冗余校验,自动地址增长模式,保存读写周期。

SL811HS内部电路结构见图1.1
 

(2)相关寄存器介绍
    USB系统驱动的编程,实质上就是对SL811HS的寄存器和一些缓存区的读写,SL811HS内部一共有256个字节的缓存,高端240个字节作为通用内存,可以随意访问,低端16个字节是特殊功能寄存器,USB的一些规范就融合在里面。SL811HS有A、B两套并行的寄存器,功能和使用完全一样,见表1.1。
SL811HS功能寄存器 
(3)接口电路
    SL811HS既可以作为嵌入式的主机又可以作为设备,灵活性非常大。它可以直接连到处理器或者按内存映射的方式接到ARM处理器上。硬件设计时候主要注意几个关键引脚的处理:

  1. nCS:低电平有效,使能SL811HS接口和读写寄存器与内存。必须使nCS在一个传输周期中至少要保持65纳秒以上才能进行有效的通信。
  2. nWR:低电平有效,要使数据有效nWR也至少需要持续65个纳秒以上。一但nWR  为低时,总线上的信息至少要保持5个纳秒。
  3. nRD:低电平有效,读取数据之前,必须先写入地址,nRD的最小周期是65个纳秒。一但nRD为低时,总线上的信息至少要保持5个纳秒。
  4. A0:低电平时代表地址,高电平时代表数据。A0至少要保持10个纳秒以上才能保证数据正确写入。
  5. INTRQ:高电平有效,当传输事务完成,或者有外部设备接入时,就会触发中断。通过写入中断寄存器可以清除中断。
  6. nRest:低电平有效,SL811HS上电后需要复位。

常见8位嵌入式处理器和SL811HS的连接见图1.2。SL811HS读时序见图1.3,写时序见图1.4。
SL811HS连接8位单片机 
 
 
1.2.2 微处理器
    本设计的主要目的是在普通单片机下能够使用USB移动存储,同时通过该系统的串口能够完成让外部的嵌入式设备也能使用USB移动存储。主机处理器芯片选用兼容MCS-51指令的AT89C52,并外扩一个32K的RAM。系统的功能设计见图1.5。
点击看大图 
    AT89C52控制器主要是通过SL811HS对USB移动存储进行操作,外部控制按钮(小键盘)输入不同的值可以实现不同的功能,比如写文件、读文件、建立目录或删除文件等。RS232接口,主要是留给外部系统使用,其它的嵌入式系统只要接上该系统的串口,按照一定的命令格式就可以通过串口使用USB移动存储。根据SL811HS容错报告所知,SL811HS的内部锁相环非常敏感,易受高频噪声干扰,从而导致时钟抖动,进而会使SOF不准确(标准周期为1毫秒)。解决这个问题有两种措施:

  1. 尽量使用有源的48M晶体
  2. 备选方案是使用无源48M晶振,同时在SL811HS的VDD脚加上适当的滤波电容,并注意PCB的布线。
    1.3固件程序设计
        USB主机系统固件的编写比较繁琐,主要涉及到USB控制传输、USB批量传输、海量存储类协议、UFI磁盘操作命令和FAT文件系统的编写,全部都是最底层的程序操作,没有现成的类库支持,故程序整体框架的搭建和具体协议的数据结构的组织是非常关键的。基于以上因素,构建了系统的总体逻辑设计,见图1.6。
     
        这些协议或者命令层层相扣,每一层开发的优劣不仅直接影响功能的实现,更会直接影响数据传输的稳定性和速度。该系统设计的主要难点在于软件程序的编写,由于牵涉的协议多,在编写程序时要重视模块化的思想,每一个具体的协议尽量都编写在一个源文件里,数据结构和常量、变量最好定义在每个模块的头文件中。在调试USB 底层的控制传输时,可以充分利用Bus Hound工具抓取USB移动存储刚插入计算机时与计算机通信的数据来分析、对比和参考开发,加深对USB整个底层信息交互的理解。
    1.3.1 USB总线枚举协议的实现
       任何USB设备连上USB主机后,都必须经过USB主机的枚举配置后才能正确使用。USB总线枚举的步骤和方法,对于所有USB设备来说都是一样的,必须遵守标准的USB协议过程,通过控制传输的“一问一答”来实现主机和从机必要的几个数据交流:获取设备描述符、分配设备地址和配置设备。控制传输的核心是SETUP包,其结构见表1.2。
    点击看大图 

    1. bmRequestType:共一个字节,每一位代表一定的意义。第7位D7代表数据传输方向:D7=“0”,代表主机到设备(OUT),D7=“1”,代表设备到主机(IN);D6和D5表示命令类型:D6D5=“00”表示标准请求,D6D5=“01”表示类请求,D6D5=“10”表示用户定义的请求,D6D5=“11”保留值;D4-D0表示命令的接受者类型:D4D3D2D1D0=“00000”表示接受者为设备,D4D3D2D1D0=“00001”表示接受者为接口,D4D3D2D1D0=“00011”表示为其它接受者,D4D3D2D1D0 的其它值保留。
    2. bRequest:请求命令代码,在标准的请求命令中USB为每一个命令编了一个代号,见表3.3。
    3. wValue:共2个字节,用户自定义。
    4. wIndex:共2个字节,用户自定义。

        总线枚举的所有命令都是通过SETUP包发送出去的,在SL811HS中就是通过启动DATA0把命令包发送出去。如果命令要求有数据传输,那么SETUP包后接着还有IN包或者OUT包可选数据发送,此时由于前面SETUP包已经启动了DATA0,这里就必须开启DATA1,如果数据大于端点的最大数据载荷,那么就用DATA1/DATA0的方式交替来发送。主机和设备在接收到USB包时,首先就要根据包标识域(PID)进行解码,进而区分出是什么包。USB控制传输主要是SETUP包,同时还有相应的IN包或OUT包;在控制传输完成之后接着是批量传输(BULK),这就是纯粹的IN包或OUT包的传输了。这些包在主机固件里具体如何区分、实现呢?根据表2.1可以知道检验PID的值可以区分出SETUP、IN和OUT包。那么IN和OUT包到底是控制传输中的呢?还是批量传输中的呢?此时要明白,控制传输是所有USB主机或者设备开发中的必要传输,并且只能由默认端点0来完成,所以可以在固件中判断当前信息交互的端点号就可以区分出IN和OUT包到底归属于哪一种传输。如果是批量传输中的IN包或者OUT包,那么可以直接启动DATA0/DATA1来发送数据。USB枚举程序底层数据包传输设计结构见图1.7。
    数据包发送的乒乓设计 
        形象点讲USB主机枚举的过程就是:首先获取设备属性,设备会返回18个数值(值中对固件有用的是最大包端点长度),然后为设备分配一个操作地址,地址范围可以根据实际情况而定,并且配置设备,最后列举设备端点,获取设备的每一个端点号(地址)。枚举的实质目的就是想获取设备的端点地址,靠它来完成数据包的收发。获取设备属性、分配地址等枚举请求命令都有标准说明(见表1.3)。
     
        SL811HS 芯片必须初始化、复位后才能对设备进行枚举操作,实践表明对SL811HS寄存器初始化的顺序和延迟时间非常关键,会影响到整个系统的稳定性和速度。经测试比较好的初始代码如下:

    void S811Init(void)
    {  
        SL811Write(cDATASet,0xe0); //设定SOF计数器低8位
        SL811Write(cSOFcnt,0xae);  //设定主机工作模式
        SL811Write(CtrlReg,0x5);   //开SOF
        Delay(150);               //延时       
        SL811Write(EP0Counter,0);  
        SL811Write(IntEna,0x20);   // 写中断寄存器
        SL811Write(IntStatus,INT_CLEAR);   //清楚中断
    }

    1.3.2 USB批量传输和海量存储类协议的实现
       USB主机系统实现目的是使用USB移动存储,涉及到大量文件数据的传输,所以应该选择USB批量传输(BULK)。批量传输用BULK端点进行命令、数据和状态的传输[4],其流程结构见图1.8。CBW是命令块封装包,CSW是命令状态封状包,都是一系列包的集合。
     
    (1)CBW
    CBW的长度为31字节,包含了海量存储类协议的磁盘操作命令,其结构见图1.9。
    点击看大图 

    dCBWSignature:是CBW的标志,固定值为0x43425355,所有CBW的值在USB总线上传输的时候都是按照LSB顺发送的,即最先发送低位,然后发送高位。

    1. dCBWTag:由主机产生的并发送给设备,设备会将此值填入CSW的dCSWTag,以此返回给主机。
    2. dCBWDataTransferLength:主机希望在批量端点上传输数据的大小。
    3. bmCBWFlag:一个字节的位图,D7=“0”时表示主机输出数据,反之主机接受数据,D6没有用到,D5-D0保留位。
    4. bCBWLUN:接受命令的设备逻辑单元号。
    5. bCBWCBLength:表示了CBWCB的长度,也就是磁盘操作命令的长度。
    6. CBWCB:填入磁盘操作命令。

    CBW是以二进制位发送的,每个包必须是精确的31个字节,不满足的要补0。
    (2) CSW
    CSW的长度为13字节,其结构见图1.10。
    点击看大图 

    1. dCSWSignature:是CSW的标志,固定值为0x53425355,CSW的值也都是按LSB顺序发送。
    2. dCSWTag:命令状态标签,该值与CBW中的dCBWTag值相同。
    3. dCSWDataResidue:该字段表示dCBWDataTransferLength字段中主机希望的数据长度与实际发送的数据长度之间的差额。
    4. bCSWStatus:表示命令执行情况,见表1.4
       

    (3)UFI
        UFI是Mass Storage 类的子类,支持海量存储类的USB主机应该实现这些子类命令。UFI子类命令是基于SFF-8070I和SCSI-2的,每个命令块的长度均为12字节,UFI的各种命令及操作码如表3.5。对USB移动存储的所有操作都是经过这些命令来完成的,UFI命令封装于CBW中的CBWCB块中,靠CBW传输出去,命令结果的状态保存于CSW中,通过读CSW相关结构中的数值,就可以了解命令的最终执行情况。UFI命令是标准的12字节,命令结构见图1.11。
    点击看大图 
    点击看大图 
        其中操作码与表1.5中每一种命令相对应。Lgical Unit Number(LUN),每一个设备上可能有很多个逻辑单元共享着该设备功能特性,设备上的逻辑单元都被连续从0X0-0XFF 进行编号;Logical Block Address (LBA), LBA的值从逻辑块0连续递增到最后一个逻辑块,系统中LBA代表的就是移动存储介质的绝对扇区。注意LUN和LBA的字节发送顺序都是MSB,在8位单片机里保持正常顺序即可,CBW结构定义如下:

    typedef struct _COMMAND_BLOCK_WRAPPER{
           DWORD  dCBW_Signature;
           DWORD  dCBW_Tag;
           DWORD  dCBW_DataXferLen;
           BYTE   bCBW_Flag;
           BYTE   bCBW_LUN;BYTE   bCBW_CDBLen;
           CBWCB  CBWCommand;
           BYTE   Resverd[4];
        } CBW, *PCBW;

    CBWCB是具体的磁盘操作命令,大小为12字节,用联合体定义如下:

    typedef union _CBWCB{   
           READ                 Ufi_Read;
           READ_CAPACITY        Ufi_ReadCapacity;
           WRITE                Ufi_Write;
           INQUIRY              Ufi_Inquiry;
           REQUEST_SENSE        Ufi_RequestSense;
           TEST_UNIT            Ufi_TestUnit;
        } CBWCB, *PCBWCB;

    CSW状态返回值填充在各个字段域里面,定义如下:

    typedef struct _COMMAND_STATUS_WRAPPER{
           DWORD   dCSW_Signature;
           DWORD   dCSW_Tag;
           DWORD   dCSW_DataResidue;
           BYTE    bCSW_Status;
        } CSW, *PCSW;

    为了节约存储空间和提高效率再把CBW和CSW定义在一个联合体里面,如下:

    typedef union _Block{
           CBW    CbwBlock;
           CSW    CswBlock;
        } BLOCK,*pBlock;

    在程序中定义BLOCK  idata BlockCommand,就可以访问CBW和CSW了。

 

点击此处查看原文 >>

系统分类: 嵌入式   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(100)
发表于:2008-6-28 11:19:25
标签:无标签

1

实验七集成电路、分离元件混合放大器的设计

实验七集成电路、分离元件混合放大器的设计

实验七
  集成电路、分离元件混合放大器的设计(设计性实验)

一、实验目的

1、掌握集成电路、分离元件混合放大器的设计方法。
2、学会安装、调试电子电路小系统。
二、要求

1.整体要求
(1) 设计方案及验证;
(2) 器件选择;
(3) 电路图设计与仿真;
(4) 安装、调测;
(5) 实验报告。

2.基本部分
设计集成电路、分离元件单声道混合放大器,使用+12V、-12V稳压电源。性能指标要求达到如下:
(1)频率范围:40Hz~20KHz±3dB;
(2)额定输出功率:PO不小于10W(负载8欧姆 、输入信号1KHZ);
(3)效率:≥40%;
(4)要在电路板上腐蚀出学号、姓名。

最后要求调试好,测试其静态工作点及性能指标:(电压放大倍数、输入灵敏度、额定输出功率、效率、频响、噪声电压)。

3.发挥部分
设计集成电路、分离元件单声道混合放大器,要求制作符合性能指标的稳压电源。
性能指标要求达到如下:
(1)频率范围:20Hz~50kHz±3dB;
(2)输出功率: PO不小于10W             (负载8欧姆 、输入信号1KHZ);
(3)效率:≥50%;
(4)要在电路板上腐蚀出学号、姓名。。


针对以上,设计完善电路。最后要求调试好,测试其静态工作点及性能指标(电压放大倍数、输入灵敏度、额定输出功率、效率、频响、噪声电压)。

三、实验仪器
1、计算机
2、示波器
3、低频信号源
4、直流稳压电源
5、毫伏表
6、数字万用表

四、实验报告、内容
1、设计过程及用EWB模拟分析。
2、整理所测数据。
3、将理论值与实际值比较,分析误差。

五、思考题
1、集成电路、分离元件放大器的理论输出幅度如何计算?
2、如果正、负电源电压不等,输出波形如何?


由于条件限制、提供如下主要元器件:
元件 名称(型号)数量   
1/2W电阻 20K欧  2   
 100K欧  2   
 10K欧  2   
 30欧  2   
 220欧  2   
2W电阻 1欧  2   
 8.2欧  1   
电容 电解电容100uF/25V 4   
 0.1uF/63V  4   
 0.033uF  1   
二极管 IN4148  4   
三极管
 2N5551  1   
 2N5401  1   
 B649  1   
 D669  1   
 2N2955  1   
 2N3055  1   
IC NE5532  1   
印制板 110*60mm  1   
IC插座 2*4 DIP  1   

需要电路图的请联系:czfngfu@163.com

 

点击此处查看原文 >>

系统分类: 模拟技术   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(186)
发表于:2008-6-28 11:12:16
标签:无标签

1

多用途无线数据收发模块

 无线数据传输广泛地运用在车辆监控、遥控、遥测、小型无线网络、无线抄表、门禁系统、小区传呼、工业数据采集系统、无线标签、身份识别、非接触RF智能卡、小型无线数据终端、安全防火系统、无线遥控系统、生物信号采集、水文气象监控、机器人控制、无线232数据通信、无线485/422数据通信、数字音频、数字图像传输等领域中。
    

        

1。 发射机天线 (最好接23厘米天线)
2。 发射机数据端
3。 VCC正电源
4。 GND接地端
5。 接收机天线 (最好接23厘米天线)
6。 GND接地端
7。 接收机数据端
8。 VCC正电源
9。 发射模块体积(左边大的22x22x8毫米,小的13x13x5毫米)
10。接收模块体积(47x19x8毫米)


这是数据发射模块的电路图



这是数据接收模块的电路图

  数据发射模块的工作频率为315M,采用声表谐振器SAW稳频,频率稳定度极高,当环境温度在-25~+85度之间变化时,频飘仅为3ppm/度。特别适合多发一收无线遥控及数据传输系统。声表谐振器的频率稳定度仅次于晶体,而一般的LC振荡器频率稳定度及一致性较差,即使采用高品质微调电容,温差变化及振动也很难保证已调好的频点不会发生偏移。
    DF发射模块未设编码集成电路,而增加了一只数据调制三极管Q2,这种结构使得它可以方便地和其它固定编码电路、滚动码电路及单片机接口,而不必考虑编码电路的工作电压和输出幅度信号值的大小。比如用PT2262或者SM5262等编码集成电路配接时,直接将他们的数据输出端第17脚接至DF数据模块的数据端即可。
    数据模块具有较宽的工作电压范围3~12V,当发射电压为3V时,空旷地传输距离约50~100米,发射功率较小,当电压5V是约200~400米,当电压9V时约500~600米,当发射电压为12V时,为最佳工作电压,具有较好的发射效果,发射电流约60毫安,空旷地传输距离800~1000米,发射功率约200毫瓦。当电压大于l2V时功耗增大,有效发射功率不再明显提高。这套模块的特点是发射功率比较大,传输距离比较远,比较适合恶劣条件下进行通讯。天线最好选用25厘米长的导线,远距离传输时最好能够竖立起来。
    数据模块适合采用ASK方式调制,以降低功耗,当数据信号停止时发射电流降为零,数据信号与DF发射模块输入端用电阻而不能用电容耦合,否则数据模块将不能正常工作。数据电平应接近数据模块的实际工作电压,以获得较高的调制效果,过宽的调制脉冲信号容易引起调制效率下降,收发距离变近。当高电平脉冲宽度在0.08-0.5ms时发射效果较好,大于1ms后效率开始下降;当低电平区大于10ms,接收到的数据第一位极易被干扰(即零电平干扰)而引起接收到的数据错误。如采用CPU编译码可在数据识别位前加一些乱码以抑制零电平干扰,若是通用编解码器,可调整振荡电阻使每组码中间的低电平区小于10ms(如编码器为PT2262时,振荡电阻可以取1.2M)。数据模块输入端平时应处于低电平状态,输入的数据信号应是正逻辑电平,幅度最高不应超过DF数据模块的工作电压,如果是负逻辑电平需经反相。
    发射发射模块最好能垂直安装在印板边部,应离开周围器件5mm以上,以免受分布参数影晌。DF模块的传输距离与调制信号頻率及幅度,发射电压及电池容量,发射天线,接收机的灵敏度,收发环境有关。一般在开阔区最大发射距离约800米,在有障碍的情况下,距离会缩短,由于无线电信号传输过程中的折射和反射会形成一些死区及不稳定区域,不同的收发环境会有不同的收发距离。
    数据模块的最大传输数据速率为9.6KBs,一般控制在2.5k左右,过高的数据速率会降低接收灵敏度及增大误码率,一般遥控报警器也不需要过高的速率,现在遥控报警器普遍使用性价比较好的PT2262及2272编解码器,振荡电阻PT2262可以采用1.2M,PT2272可以采用200K,具有较好的收发距离(此电阻值必须精确,精度误差小于5%)。如用于单片机,速率可取2.4kbps,同时应兼顾到发射效率。当数据中连续几个“1”,脉宽超过1ms后,会引起发射效率下降,太大的占空比及太低的频率易引起过调制,当高电平脉宽在0.1-1ms范围,收发效果较好。不合适的数据速率同样会影响收发距离,甚至收不到信号。
    接收模块的工作电压为5伏,静态电流4毫安,它为超再生接收电路,接收灵敏度为-105dbm,接收天线最好为25~30厘米的导线,最好能竖立起来。接收模块本身不带解码集成电路,因此接收电路仅是一种组件,只有应用在具体电路中进行二次开发才能发挥应有的作用,这种设计有很多优点,它可以和各种解码电路或者单片机配合,设计电路灵活方便。这种电路的优点在于:
    1。天线输入端有选频电路,而不依赖1/4波长天线的选频作用,控制距离较近时可以剪短甚至去掉外接天线
    2。输出端的波形在没有信号时是一条直线,干扰信号只是在这条直线上产生极短暂的针状脉冲,而不象其它再生接收电路会产生密集的噪声波形,所以抗干扰能力较强。
    3。模块自身辐射极小,加上电路模块背面网状接地铜箔的屏蔽作用,可以减少自身振荡的泄漏和外界干扰信号的侵入。
    4。采用带骨架的铜芯电感将频率调整到315M后封固,这与采用可调电容调整接收频率的电路相比,温度、湿度稳定性及抗机械振动性能都有极大改善。可调电容调整精度较低,只有3/4圈的调整范围,而可调电感可以做到多圈调整。可调电容调整完毕后无法封固,因为无论导体还是绝缘体,各种介质的靠近或侵入都会使电容的容量发生变化,进而影响接收频率。另外未经封固的可调电容在受到振动时定片和动片之间发生位移;温度变化时热胀冷缩会使定片和动片间距离改变;湿度变化因介质变化改变容量;长期工作在潮湿环境中还会因定片和动片的氧化改变容量,这些都会严重影响接收频率的稳定性,而采用可调电感就可解决这些问题,因为电感可以在调整完毕后进行封固,绝缘体封固剂不会使电感量发生变化。
    如果接收端用PT2272或者SM5272解码时,可以将DF接收模块的数据输出端直接接PT2272或者SM5272的第14脚, 如果利用单片机的软件解码可以省略解码芯片,使系统的硬件得以简化,但是要考虑单片机的时钟频率的倍频会对接收模块的干扰,比如单片机应离开接收模块,降低单片机的工作频率,中间加入屏蔽等,更应该避免共用一条地线。
    接收模块工作时一般输出的是高电平脉冲,不是直流电平,所以不能用万用表测试,调试时可用一个发光二极管串接一个3K的电阻监测DF模块的输出状态。


点击此处查看原文 >>

系统分类: 模拟技术   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(280)
发表于:2008-6-19 8:50:32
标签:无标签

1

555时基电路及其应用

实验六  555时基电路及其应用

 

 

一、实验目的

    1、熟悉555型集成时基电路结构、工作原理及其特点

    2、掌握555型集成时基电路的基本应用

 

 二、实验原理

    集成时基电路又称为集成定时器或555电路,是一种数字、模拟混合型的中规模集成电路,应用十分广泛。它是一种产生时间延迟和多种脉冲信号的电路,由于内部电压标准使用了三个5K电阻,故取名555电路。其电路类型有双极型和CMOS型两大类,二者的结构与工作原理类似。几乎所有的双极型产品型号最后的三位数码都是555556;所有的CMOS产品型号最后四位数码都是75557556,二者的逻辑功能和引脚排列完全相同,易于互换。5557555是单定时器。5567556是双定时器。双极型的电源电压VCC+5V+15V输出的最大电流可达200mACMOS型的电源电压为+3+18V

  

 1555电路的工作原理

    555电路的内部电路方框图如图61所示。它含有两个电压比较器,一个基本RS触发器,一个放电开关管T,比较器的参考电压由三只 5KΩ的电阻器构成的分压器提供。它们分别使高电平比较器A1 的同相输入端和低电平比较器A2的反相输入端的参考电平为 A1A2的输出端控制RS触发器状态和放电管开关状态。当输入信号自6脚,即高电平触发输入并超过参考电平 时,触发器复位,555的输出端3脚输出低电平,同时放电开关管导通;当输入信号自2脚输入并低于 时,触发器置位,5553脚输出高电平,同时放电开关管截止。