阵列电路

2024-10-29

阵列电路(通用3篇)

阵列电路 篇1

随着红外成像仿真技术的快速发展,对目标图像动态模拟的要求越来越高,迫切需要在实验室条件下,建立目标红外图像实时生成和显示系统,较真实地模拟目标的物理特征。作为所有红外景象产生技术中,整体性能最优秀的一项技术,电阻阵列动态红外景象投射器很早就受到人们的关注[1]。

单元电路的设计结构对整个器件的性能有至关重要的影响。由于电阻阵列器件内部电源线和地线的宽度总是有限的,因此具有一定的总线电阻,而器件工作时的电流很大,通常达到10A以上,导致电源线和地线上一定的电位不均匀。如果驱动电路的工作点对电源总线上的电位非常敏感,这种不均匀性就直接造成驱动电流的不均匀,从而降低整个器件的性能。本文将对三种不同结构的驱动电路进行分析和仿真,寻求一种对电源及地总线压降最不敏感的驱动方式。

1辐射电阻元的特性

如图1所示,微桥辐射体为多层复合薄膜结构,内嵌多晶硅加热体,复合薄膜形成后,采用特殊工艺将薄膜下面的硅衬底挖空,使薄膜成为架空的桥体结构。这样的结构具有一定的隔热性能,同时也保持了有效的热传导途径,在一定的热功率输入下,可以比较快速地达到很高的表面温度。

2 单元电路结构与仿真

2.1 共源驱动

图2为电阻阵列动态红外景象投射器最常用的单元电路结构,国外很多的电阻阵列都采用类似结构的电路[2]。其中,R为辐射电阻元。M2为选通管,用做选通需要加热的电阻元;M1为驱动管,为R提供电流,以使R发出热辐射。当M2选通时,信号Vs经M2传输至M1栅上,M1以相应的电流给电阻元加热。当M2关断时,存储在电容CH上的电荷经M2的漏电阻缓慢放电。在放电时间内,M1可维持电阻加热。该电路结构中,所有的Vdd均连在一起形成电源总线,为负载提供驱动电流,而最后驱动电流流向共同的地线Vss。

如图3所示,当M1工作在饱和区,漏电流ID方程为[3]

ΙD12μnCoxWL(VS-VΤΗ)2(1+λVDS)

式中λ为沟道长度调制系数。应用Spice仿真工具对图2虚框内的驱动电路进行了仿真,其中,M1晶体管宽长比W/L为29.8 μm/1.3 μm,栅源电压为1.53 V,辐射源电阻为1 kΩ。图3为三种不同驱动方式在给定的栅源电压下,M1驱动管的漏电流与电源电压关系的仿真结果图。如图3中的(a)共源驱动曲线所示,由于沟道长度调制,使特性曲线在饱和区出现非零斜率,因而使D和S之间电流源非理想。参数λ表示给定的VDS增量所引起的沟道长度的相对变化量。当Vdd从5 V变化到4 V,ID电流从1.018 mA变化到0.947 mA,即71 μA/V。

如图2所示,地电位Vss的压降直接影响到栅源电压,所以对输出驱动电流影响很大。图4为三种不同驱动方式M1驱动管栅源输入电压与输出漏电流的仿真结果,由图4(a)共源驱动曲线所示,当VGS从1.52 V变化到1.44 V,漏电流ID从1 mA变化到0.856 mA,即1.8 mA/V,特别是当栅源输入电压VGS较低时,影响更大,线性度较差。与电源压降的影响相比,地电位压降对驱动电流的影响是非常严重的。

2.2 共漏驱动(源跟随器)[4]

图5为共漏驱动电路结构。在饱和区漏电流ID方程为

ΙD12μnCoxWL(VS-VΤΗ-ΙR)2(1+λVDS)VDS=Vdd-ΙDR

随着Vs增加,ID也增加,同样在R上的压降也会增加。输入电压的一部分出现在电阻R上而不是作为栅源的过驱动电压,因此导致ID的变化变得平滑,如图3(b)共漏驱动曲线,当VGS=2.8 V,Vdd从5 V变化到4 V,ID电流从1.016 mA变化到0.994 mA,即22 μA/V,与共源驱动相比对电源总线压降敏感度降低,但电流驱动能力减小,为了得到同样大小的电流,必须加大驱动管的宽长比(W/L)或提高栅源电压(VGS)。

如图5所示,地电位VSS的压降经过辐射元电阻R影响到栅源电压。图4(b)为共漏驱动的输入电压与输出电流的特性曲线,当VGS从2.8 V变化到2.72 V,漏电流ID从1.02 mA变化到0.969 mA,即0.58 mA/V,它的线性度得到改进,只要VS 小于Vdd,图5中的M1是不会进入线性区的,输出电流ID随R的增大而减小。与共源驱动相比,受地压降的影响明显得到改善。

2.3 共源共栅驱动(cascade)[5]

图6为共源共栅驱动电路结构,它类似与共源驱动方式,它可以抑制沟道长度调制的影响,从而改善输出电流受电源的影响。为了保证M1和M2 都处于饱和区,必须满足

Vbias>VGS1+VGS2-VTH1。

式中,VGS1、VGS2分别为M1、M2的栅源电压,VTH1为M1的开启电压。如图3(c)共源共栅曲线所示,当Vbias=3.0 V,VGS=1.66 V,Vdd从5 V变化到4 V,ID电流从1.01 mA变化到1.006 mA,即4 μA/V,与共源结构和共漏结构相比,它受电源影响最不敏感。

与共源结构相比,共源共栅结构的一个重要优点是输出阻抗很高,ID不会受电阻R的变化而变化,可以作为一个理想的恒定电流源。

受地电位压降的影响类似与共源结构,如图5(c)共源共栅驱动的输入电压与输出电流的特性曲线所示,当VGS从1.68 V变化到1.6 V,漏电流ID从1 mA变化到0.87 mA,即1.6 mA/V,它的线性度差。

3 总结

从前面的分析和仿真中可以得出,选择晶体管工作在饱和区域,三种不同结构的驱动方式,电源电压的压降对驱动电流都没有太大影响,其中共源共栅驱动方式受Vdd的影响最不敏感。

无论是共源结构、共漏结构,还是共源共栅结构,地电位VSS的变化直接影响到栅源电压VGS,所以对输出驱动电流ID影响很大,其中共漏驱动方式受地电位影响最弱。

与电源压降相比,地电位的不均匀是影响驱动电流ID的主要因素,所以,共漏驱动方式对总线压降最不敏感,而且线性提高,由于反馈作用,晶体管不均匀影响也可以消除[6],由此可见,对于电阻阵列单元驱动电路来说,它是较好的选择。

摘要:比较了电阻阵列动态红外景象投射器单元电路的三种不同驱动结构的性能,用spice软件进行了仿真,讨论了这三种电路对电源总线和地总线的电位变化的敏感程度,最后得出结论共漏驱动结构是比较好的选择。

关键词:电阻阵列,共源,共漏,共源共栅

参考文献

[1]张励,冯晓晨,张琰,等.基于电阻阵列的红外图像.实时生成和显示系统.系统仿真学报,2006;18(Suppl.2):460

[2]肖云鹏,马斌,梁平治.电阻阵动态红外景象投射器单元电路研究.科学技术与工程,2006,6(14):2116—2118

[3][美]毕查德.拉扎维.模拟CMOS集成电路设计.西安:西安交通大学出版社.2003,23

[4] Cole B,Higashi R,Ridley J.Recent progress in large dynamic resistorArrays.SPIE,1997;(3084):64

[5] Bruce Offord,Marlin HR.Scaled CMOS MEMS for real time infra-red scene generation.SPIE,2000;(4027):95

[6] Pritchard AP.Current status of the British aerospace resistor array IRscene projector technology.SPIE,1997,(3084):72—74

阵列电路 篇2

视频信息的采集、存储、传输与处理一直都是多媒体领域研究的热点[1]。多种视频标准并存, 桌面、嵌入式等不同应用, 需要兼顾计算高效性和编程灵活性的动态可重构可编程视频处理器体系结构[2]。而传统通用处理器 (Gnereal Purpose Processor, GPP) 、DSP以及专用电路已很难满足视频处理性能和灵活性的要求, 所以支持多标准和多种视频编解码算法已成为视频编解码器发展的趋势, 这向体系结构设计提出了更高的要求[3,4]。GPP采用RISC指令系统, 通过超标量、乱序执行、动态分支预测、推测执行等机制, 但执行效率低下, 也只能处理较小的图像[5];如Intel的MMX/SSE、IBM的Alti Vec、HP的MAX-I/MAX-II等。专用集成电路 (ASIC) 性能高, 执行效率也成倍提高, 如TIAN X H[6]通过利用流水线的方式来减少数据相关性, 并设计了一种完全支持RDO的上下文存储器管理机制, 能够达到每个时钟周期处理一个符号的速度, 但它没有了可编程的灵活性, 无法适应多标准的发展。现有编解码器体系结构无法完全满足视频处理的需求, 研究创新的可编程可重构统一处理阵列体系结构, 能够解决视频处理的计算高效性和编程灵活性问题[7,8,9], 但在视频阵列处理器中数据加载已逐步成为阵列处理器的瓶颈。如何减少数据的访存冗余, 提高视频阵列处理效率, 是一个亟待解决的问题。

本文将要介绍可编程可重构数据加载单元的设计与实现, 从而提升视频处理的效率与性能。

1 运动估计算法对存储结构要求

目前在视频编解码标准中, 运动估计算法主要是为了除去帧间冗余, 使视频传输过程中的比特数大大减少。运动估计基本算法就是要对当前帧和参考帧进行最小平均绝对值误差 (MAD) 操作, 得到其运动矢量发送到解码端。如图1所示, 实线框分别表示当前帧 (W×H) 和编码的当前块 (N×N) , 虚线框分别表示参考帧 (W×H) 和计算的候选块 (N×N) , 点线框是参考帧的搜索区域 (2pv+N×2ph+N) 。

计算过程包括了六重循环, 当前块和候选块的每个像素计算绝对误差和 (SAA) , 候选块遍历了 (2ph+N) × (2pv+N) 个像素的搜索窗, 即在搜索窗内选定了2ph×2pv比较块。一帧图像计算绝对误差和 (SAA) 就要进行W×H×2pv×2ph次操作, 每次绝对误差和操作需要2个像素, 那么一帧图像要访问存储2×W×H×2pv×2ph次。若为1 080P30 f/s, 则总线将要读取像素点7.962 64 Gpixel/s, 而实际当前帧和参考帧的全部像素点仅为2×1 080×1 920×30=0.124 416 Gpixel。访存冗余规定如下:

若结构不支持硬件缓存区域, 访存冗余将达到64。那么存储的带宽BW=f×W×H×访存冗余当前帧+f×W×H×访存冗余候选块。存储带宽由访存冗余决定, 当每个像素只进行一次访存操作时, 存储器的带宽最小。所以必须在硬件内部设置像素缓存区域。若系统时钟为100 MHz, 进行1 080P 30 f/s帧间预测, 那么搜索一帧的最大时间为1/30 s, 搜索每个4×4子块的时间为26个系统时钟。pv=ph=32的搜索区域含有1 024个候选块, 每个候选块要进行16次减法和15次加法, 即26个时钟要处理1 024个候选块31K次操作, 这显然需要多个候选块并行操作, 所以存储系统要有能够支持多个候选块并行操作的能力。

2 视频阵列处理器数据加载单元设计

2.1 视频阵列处理器结构

视频阵列处理器可编程可重构的统一体系结构就是采用处理单元 (PE) 之间邻接互连, 基于单指令多数据 (SIMD) 的数据级并行计算和多指令多数据 (MIMD) 的指令级并行计算, 解决了并行算法和非并行算法的计算高效性和编程灵活性。简单来说就是将算法中灵活的部分用编程方式执行, 而算法中计算量较大的部分采用可重构的方式并行处理。图2给出了完整的视频阵列处理器系统结构, 包含5个可编程可重构阵列, 每个可编程可重构阵列都是通过总线与主处理器连接且可编程可重构阵列之间可以通过寄存器进行通信。每一个可编程可重构阵列包含16个可编程可重构处理单元组以及一个单元组阵列控制器处理器;每一个处理单元组主要包含一个可重构的4×4处理单元阵列以及一个可编程的处理单元组控制处理器。

该视频阵列处理器可编程可重构的统一体系结构可以完成视频压缩的计算任务, 主处理器将不同的视频压缩算法映射到可编程可重构阵列处理器上。根据算法特点分为可重构处理部分和可编程处理部分, 用4×4阵列处理单元处理一些计算量大的算法, 用可编程控制器处理比较灵活的算法。

2.2 数据加载单元的设计

访存时, 需要局部存储单元加载部分数据, 以实现数据复用。对当前帧需要N×N存储大小, 而数据复用重叠区域的大小为N× (N-1) ;对参考帧搜索区域的存储大小为2ph×2pv, 数据复用重叠区域的大小为2ph× (2pv-1) 。由于处理单元 (PE) 不存在局部存储, 采用广播策略分派数据。计算过程应该是PC地址和数据地址的计算, 所有的操作指令都应由PC和数据地址驱动, 系统根据PC取出相应指令得到所需数据, 并由数据地址得到对应的数据, 由新数据或已有数据计算下一次操作的PC值和数据地址循环往复。其数据流经计算部件输出数据结果, 可编程大多是自主申请所需数据, 而可重构或ASIC为了更高的性能大多使用地址生成的策略将数据“灌入”计算单元, 以节省读取数据的时间, 增加系统吞吐率。如图3所示数据存储结构, 块区域存储 (Block Area Mem) 需要兼顾申请读取和“灌入”数据两种模式。实线表示加载数据通过总线分别加载到各个块区域存储中;而当多个PE组需要加载相同数据时, 如虚线表示可以通过一个发出读请求的块区域存储广播到其他需要数据的块区域存储中实现数据的共享。

块区域存储 (Block Area Mem) 负责与总线通信, 以及数据的缓存, 即需要当前帧缓存、参考帧缓存和写入数据缓存。当前帧缓存负责当前块的缓存和预取, 参考帧缓存负责参考块的缓存和预取, 写入缓存负责重建帧和相关变量的写入。若使用灌入模式, 为了达到高的处理能力, 块区域存储 (Block Area Mem) 对当前块和参考块进行缓存和预取, 为阵列处理器提供不间断的数据源。在数据加载中搜索窗口的数据量要多于当前块数据, 能满足搜索窗口的加载即可满足当前块的加载, 若要实时加载32×32搜索区域, 每个搜索区域的最大处理时间是4 115 ns, 即410个时钟要加载1 024个像素分量, 每时钟应加载3个像素。块区域存储 (Block Area Mem) 采用一次加载4个像素分量设计, 即32 bit的数据位宽, 256个时钟可以加载一个32×32搜索区域的像素分量。对16×16宏块和32×32搜索区域数据采用乒乓操作, 使当前块和参考帧在“灌入”模式下不间断地提供数据。根据帧间预测算法对存储需求, 电路工作在100 MHz下, 对于pv=ph=32的搜索区域, 每26个系统时钟要处理1 024个候选块, 若16×16 PE组的每个PE只求一个当前块像素和候选块像素差的绝对值, 剩余操作由其他PE组的PE流水完成, 那么一个16×16的PE组可以处理16个4×4子块像素差的绝对值。这样要完成1 080P30 f/s实时整数运动估计, 需要读取数据的16×16 PE组有1 024/ (26×16) =2.462个, 且这3个PE组可以利用数据共享减少对存储的访问, 而总线可以对各块区域存储进行数据广播, 为减少对内部总线带宽的要求, 块区域存储 (Block Area Mem) 应具备从总线读取相同数据的能力。在Cache模式下20 KB的当前块缓存和参考块缓存共同构成了16个2路直接相联Cache。

如图4所示, 块区域存储 (Block Area Mem) 由互连检测模块 (connect_chk) 、读写控制模块 (rd_wt_ctrl) 、16×16 Buf和32×32 Buf构成。

(1) 互连检测模块:主要用于检测相邻块区域存储与本块区域存储的互连情况, 根据配置的互连情况与周围模块建立连接, 传递数据以实现数据的广播。

(2) 读写控制模块:负责在“灌入”模式时计算下次读取数据的首地址、缓冲区的切换及数据写入;在Cache模式时, 负责对2 KB寄存器进行管理, 构成16个2路直接相联Cache。

(3) 16×16 Buf:用于存储当前块数据, 受读写控制模块的控制。

(4) 32×32 Buf:用于存储参考块及搜索区域数据, 受读写控制模块的控制。

3 结果及分析

用Synopsys公司Desgin Compiler在SMIC 0.13μm CMOS工艺标准单元库下综合, 频率可达197.3 MHz。选用Xilinx公司Virtex6系列芯片Virtex XC6VLX550T进行FPGA验证, 综合后的芯片资源使用情况如表1所示。本结构采用Verilog硬件描述, 在Questasim 10.1d下完成了功能仿真和验证;图5所示为Cache模式时一组2路直接相连Cache替换策略仿真波形图。

第1次访问的数据地址peg_rd_add0为25’d823区号块号 (rd_area_nu, rd_block_nu) 即 (12, 13) , 在输出有效信号valid0有效时, hit0_0、hit0_1均为低, 此次访问没有命中, 替换id (excid0) 为低表示本次读取数据应写入本组2路ram中的0号数据ram。第2次访问的地址仍是25’d823, 在输出有效信号valid0有效时, hit0_0有效表示0号ram命中, 且0号ram的访问计数counter_0为0, 1号ram的访问计数counter_1为1, 表明ram0最近被访问过而ram1没有被访问。第3次访问的地址为25’d564区号块号 (rd_area_nu, rd_block_nu) 为 (8, 13) 与823的块号一致, 但ram1数据有效标志tag_valid1无效, 表示不发生替换exch0为低。第4次访问地址为上次的564, hit0_1有效表示ram1命中。第5次访问的地址为25’d52区号块号 (rd_area_nu, rd_block_nu) 为 (0, 13) , 此次exch0为高表示需要替换cache数据块, 且excid0为低表示要替换ram0的数据。从上述描述可知, Cache替换策略得以正确实现, 电路功能正确。

从上述分析可知, 在Cache模式时对寄存器进行管理。验证结果表明, 灌入和Cache模式可以满足1 080P实时处理对数据加载的需求。

4 结束语

本文在研究分析了视频处理编码中运动估计算法的基础上, 制定了视频阵列处理器数据加载电路设计的详细方案, 通过功能仿真验证了电路功能的正确性, 并综合电路, 得到了资源占用率、工作频率等指标。结果表明, 该电路能够满足1 080P视频处理对数据加载的要求。该研究对于灵活性和高效性的可编程可重构视频阵列处理器结构的设计有重要意义, 后期将选用更多的视频算法对该设计进行验证。

摘要:随着多种视频编解码标准和视频算法的提出, 视频处理器高效性和灵活性显得更为重要。针对视频阵列处理器中数据加载速率与阵列处理单元处理不匹配的问题, 通过对视频编解码标准算法的分析, 深度挖掘数据访存冗余和传输的特点, 在可编程可重构体系结构下, 设计了支持灌入和Cache两种工作模式的数据加载电路, 并进行了功能仿真和FPGA验证。结果表明, 该电路能够满足1080P视频处理对数据加载的要求, 采用Desgin Compiler在SMIC 0.13μm CMOS工艺标准单元库下综合, 频率可达197 MHz。

关键词:视频阵列处理器,数据加载,可编程,可重构

参考文献

[1]毕厚杰.新一代视频压缩编码标准—H.264/AVC (第二版) [M].北京:人民邮电出版社, 2009.

[2]CHEN T C, CHIEN S Y, HUANG Y W, et al.Analysis and architec ture design of an HDTV720p 30 frames/s H.264/AVC encoder[J].IEEE Trans.Circ.Syst.Video Technol., 2006, 16 (6) :673-688.

[3]LIN Y L S, KAO C Y, KUO H C, et al.VLSI design for video coding[M].Springer, 2010.

[4]刘定佳.H_264视频编码算法研究及DSP实现[D].西安:西安电子科技大学, 2010.

[5]黄小平, 樊晓桠, 张盛兵, 等.32位双发射双流水线结构RISC微处理器设计[J].西北工业大学学报, 2011, 29 (1) :6-11.

[6]TIAN X H, LE T M, HO B L, et al.A CABAC encoder design of H.264/AVC with RDO support[C].IEEE International Workshop on Rapid System Prototyping, 2007:167-173.

[7]陶文卿.面向媒体处理的可重构阵列的结构设计与研究[D].上海:上海交通大学, 2010.

[8]张鹏, 杜建国, 解晓东, 等.一种基于多核流水的多标准视频编解码器体系结构[J].计算机研究与发展, 2008, 45 (11) :1985-1993.

阵列电路 篇3

当今世界科技的发展,特别是计算机技术的发展,让我们享受了便利而丰富的生活。计算机技术中的嵌入式技术更是使得计算机无处不在。嵌入式技术发展的速度非常快,从8位、16位的单片机到如今的32位、64位的微处理器(如arm、mips等),从低端到高端的嵌入式处理器,产品非常丰富。由于单片机的结构简单、价格便宜等优点,此类低端处理器的应用还是非常的广泛。本文就采用了Microchip(微芯)公司的PIC单片机中的PIC16F877A芯片。

在某些工程项目中,有许多情况要控制非常多的外部设备,比如银行的票据暂存柜、超市里的寄存柜、图书馆的藏书柜等等。为了节省成本,通常是采用一个单片机来控制这些柜门的开关。但是单片机的I/O引脚数有限,不可能一个I/O引脚对应一个柜门锁,这样必然要涉及I/O引脚的扩展。传统的扩展方式是采用intel 8155或8255芯片进行,可是这样传统的扩展方式还是不能满足此类工程的应用。本文结合实际情况以及现有的实现方法,采用了移位寄存器芯片和阵列电路控制相结合的方法实现。

1 硬件系统的设计

该硬件系统是由一块PIC16F877A芯片、两块74LS164芯片、若干继电器组成的I/O扩展电路。

1.1 PIC16F877A芯片

PIC系列单片机是Microchip Technology(微芯公司)研发的微处理器。该公司率先采用了有利于提高代码效率及运行速度的哈佛(Harvard)总线和精简指令集计算机(RISC)结构,集结了多种存储配置、低电压、低功率、小封装于一体,具有很高的性价比。本文中选用了该公司的PIC16F877A产品,此芯片性能稳定、功耗低、用途广泛,而且微芯公司为该芯片提供的低成本的开发工具MAPLAB-ICD,非常适合用于教学、科研等方面。

如图一是PIC16F877A芯片引脚图,其中I/O引脚有四组八位,分别为RA、RB、RC、RD,共32个I/O引脚。但是其中很多引脚是作为复合引脚使用的,如果整个系统实现的功能比较多,那实际可用的I/O引脚还会更少,所以I/O引脚的合理使用是系统设计人员必须处理好的一项工作。

1.2 移位寄存器74LS164

74LS164是高速硅门CMOS器件,与低功耗肖特基型TTL器件的引脚兼容。该集成电路是8位串行输入的数据输入,并行输出8位数据。

如图二所示,数据通过两个输入端(A或B)之一串行输入;任一输入端可以用做高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。时钟(CLK)每次由低变高时,数据右移一位,输入到QA。QA是两个数据输入端(A和B)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。八个时钟之后,QA~QH上的数据并行输出。

CLK引脚接时钟信号,上升沿有效。CLR是复位输入端,低电平有效。GND接地端,VCC电源端,接5V电压。

1.3 控制系统的实现

如图三所示,本例中采用了RD5引脚和一块移位寄存器的A、B数据串行输入端相连,RD4引脚和第二块移位寄存器A、B数据串行输入端相连。RD4和RD5串行发出8位二进制数据,在时钟节拍的作用下,一位一位地发送给两个移位寄存器,RD7作为两个移位寄存器的公共时钟信号输入端相连,RD7提供的时钟脉冲(CP)可以使串行输入的数据按时钟节拍移位,最终可以在QH~QA引脚得到8位的并行信号,RD6引脚提供给两个移位寄存器复位信号,以清除之前的信号。

在实际应用中,74LS164没有并行输出控制端,在串行输入数据时,并行输出口会不断变化,这样对外部设备的控制会有很大的影响。一般可以在74LS164的并行输出端加接输出三态门控制,以保证串行输入结束后再输出。

1.4 外设的阵列电路

如果只是采用移位寄存器进行I/O口的扩展,扩展的数量比较有限,如图三的扩展方式,用了4个I/O口,扩展出了16个I/O口。而如果在商场的寄存柜较多,如8行8列为一组,就有64个小柜子,每一组用一块PIC芯片控制,而每一个I/O引脚都要控制一个柜门锁的话,那就需要64个I/O引脚。用图三的方式来实现,除了CLK和CLR需要连到单片机的I/O口外,还要4个I/O口作为4个移位寄存器的串行数据的发送端,共需要6个I/O口。而且随着要控制的外设的数量增大,所要的I/O口和移位寄存器就更多。

本例采用结合阵列电路的方式,使用少量的I/O口和移位寄存器,就能控制大量的外设。阵列电路如图四所示。

此例中采用发光二极管代替实际控制的设备,按键H0~H7、V0~V7实际应用由继电器代替。由图四可以看出,继电器H0~H7的控制端(本图只截取了其中一部分)分别接到一块移位寄存器的QA~QH端作为列控制,V0~V7的控制端分别接另一块移位寄存器的QA~QH端作为行控制,当H0和V0处于闭合状态时,发光二极管形成通路,此时发光二极管发光,也就是在行控制继电器和列控制继电器同时闭合时,处于该行该列的设备才能通电运行。这样,就可以控制8×8=64个外设。只要在单片机的串行输出端RD4和RD5端分别串行输出8位二进制数,就可以控制64个外设中的任意外设动作。如果所要控制的外设超过64个,还可以加移位寄存器,再加2个移位寄存器就可以控制16×16=256个外部设备。此时串行输出端RD4和RD5端只要串行输出16位二进制数据就可以,CLK和CLR端却可以只用RD7和RD6端口,并未多用其他的IO端口。

2 其他实现方法的探讨

IO端口的扩展方法有很多,归纳起来大致有三类:

2.1 简单的IO端口的扩展

简单的IO端口的扩展通常是用TTL或CMOS电路锁存器、三态门等作为扩展芯片,通过单片机中的某个端口控制来实现扩展的一种方案。此方案具有电路简单、成本低、配置灵活等特点。如常用芯片8255等实现。

2.2 串行口进行IO端口的扩展

此种方法是单片机的串行口来实现的,和本例中除阵列电路外的部分类似。

2.3 采用可编程的方式进行IO端口的扩展

此类方法引入了可编程器件(Programmable System Device,简称PSD)。虽然采用PSD组成的系统可以简化硬件电路,使系统的设计、修改和扩展都变得灵活方便,但是其成本因素是不得不考虑的。

和以上三类实现方式比较,本方案实现简单,成本低廉,扩展的效果明显,可控的外部设备增多,却并不增加单片机的IO端口占用,只是会增加阵列的电路的复杂程度。特别适合只使用一个单片机芯片控制极多外设的工程项目中,具有非常高的实用意义。

3 结束语

本文采用了PIC16F877A单片机和移位寄存器74LS164以及阵列电路,现实了大量外部设备的控制,有效地节省了I/O,在外部设备越多的情况下效果越明显,优点突出。但是由于使用了移位寄存器,使得控制信号传输时间较长,但相比于外设的响应速度,可以忽略,只是在实时性要求高的场合下需要谨慎使用。

参考文献

[1]宋戈,黄鹤松,等.51单片机应用开发范例大全[M].北京:人民邮电出版社,2010.

[2]彭为,黄科,雷道仲.单片机典型系统设计实例精讲[M].北京:电子工业出版社,2006.

[3]田泽.嵌入式系统开发与应用教程[M].北京:北京航空航天大学出版社,2005.

[4]郑灵翔.嵌入式系统设计与应用开发[M].北京:北京航空航天大学出版社,2006.

[5](意)贾西欧,著.李中华,张雨浓,黄晓红,译.16位单片机C语言编程:基于PIC24[M].北京:人民邮电出版社,2010.

[6]李学海.PIC单片机实用教程——基础篇(第2版)[M].北京:北京航空航天大学出版社,2007.

[7]石广范.PIC单片机原理与接口技术[M].哈尔滨:哈尔滨工业大学出版社,2012.

上一篇:铝期货市场下一篇:地基处理与基础设计