新闻中心

EEPW首页 > 电源与新能源 > 设计应用 > 一种高效多串口单一中断源的芯片设计

一种高效多串口单一中断源的芯片设计

作者:时间:2010-07-28来源:网络收藏

  1概述

  随着单片机技术的不断发展,单片机的应用越来越广泛,其中 51系列的单片机以价格低等优势始终占据着很大一块市场。但是,单片机串行口的数量通常都不多,比如 8051单片机只有一个串行口,实际使用往往要进行串行口的拓展。传统方法扩展多个串行口是利用多个中断源,而在嵌入式系统中,花费大量的中断源来扩展串口无疑是大量的资源浪费。

  为更好地利用原有的资源去拓展串口,本设计利用去拓展多个串行口,设计一个。该能配合单片机进行数据读写及传送,并且能保证多个串口中断的无遗漏检测与服务。下一步,还将对设计进行一系列严格的仿真和仿真结果分析。结果表明,该设计具有较高的应用价值。

  2 总体设计

  2.1设计

  本设计是将几个串行收发器模块集成在一块芯片上,在接收方面,利用一个中断源向单片机提出中断请求,再结合单片机的读写操作选择查询,当发现某个收发器有数据时就进行相应的操作;在发送方面,则由单片机选择发送。芯片在功能上分为两层,下层包括串行收发器﹑中断控制管理和地址锁存三个模块,上层模块负责处理模块的调用、模块间的信号连接和控制向外传送数据或标志位,系统结构如图 1。 

多串口单一中断源的芯片设计

  顶层模块:完成下层各个模块信号连接,根据不同的地址处理好数据和标志传送,收发器的选择等问题。

  中断管理模块:储存并管理各个收发器模块的标志位,如果某收发器有中断请求则定时向单片机发出中断信号。收发器模块:完成数据格式的转换及数据的接收和发送,对接收到的数据进行缓存,最多可以缓存 8个字节的数据。地址寄存器模块:在地址锁存允许位下降沿时将地址保存起来。此模块已放到顶层模块里。

  2.2 芯片与单片机连接

  芯片设计的目的是为拓展单片机串口,所以如何与单片机联合工作显得至关重要。图 2a是连接的示意图(右边为所设计的芯片,只标明了跟单片机相连的引脚及一个收发器模块的输入输出引脚)。

多串口单一中断源的芯片设计

多串口单一中断源的芯片设计

  本设计芯片与单片机的硬件连接比较简单,其中,并行数据端口 d_inout跟单片机 p0口相连,接收单片机发出的低 8位地址, ale与单片机地址锁存允许信号引脚相连,odd_check为奇偶校验结果输出引脚,连接由使用者决定。3 模块设计

  3.1 顶层模块

顶层模块在各模块设计之前作为统筹规划整个程序,是设计过程中再继续完善和修正的重要部分。在顶层模块里根据不同的地址输入,选择标志或者数据的传送。为了更好地将两次操作区分开来使编程更加容易,论文中还设计了一个标志寄存器rd_check_counter,在不同的操作来时,它的值不同。

  3.2中断控制模块

  中断控制模块要完成置标志位,定时输出中断信号和向单片机传送标志位信息等功能。模块接收端有中断请求到来,中断控制模块即将相应收发器的标志位置 1,在数据被读取之后,又立刻将标志位清 0。

  3.3收发器模块

收发器模块结构图如图 2b。在接收方面,收发器模块实现接收数据,并将数据串转并,储存到寄存器里等待单片机的读取。在发送方面,收发器将单片机数据总线送过来的并行数据串行输出。

  数据接收时数据经过格式转换后便被放入 8字节的缓存里面,该缓存在每次数据存入后就启动计数器,当过一段时间还没有新的数据存入时,收发器即可以向中断控制模块提出中断请求并且等待单片机对数据的读取。发送数据时,收发器接收到单片机送来的数据并将其存储起来,在串行数据发送设备准备好的情况(txrdy为 1)下再进行格式转换并发送,无论接收还是发送串行数据都是通过外部时钟进行计数控制的。

  3.4地址寄存器模块 .

  地址锁存模块在 ale信号(单片机地址锁存允许信号)到来时将地址低 8位锁存起来,并送给中断控制和上层模块使用。

  3.5芯片端口

  上述几个模块合成后的芯片外观及其端口特征描述如下图 3所示: 1、set_mode(0,1):两位信号输入引脚,用于模式的选择,模式 1和模式 2分别用 01和 10来选择。2、ale:地址锁存允许信号输入引脚,与单片机的 ale相连,在 ale下降沿的时候将地址低 8位锁存到地址锁存模块。3、clk:时钟信号输入引脚,时钟的频率定为串行数据传输频率的 4倍,如串行通信的波特率是9600bps,则 clk的频率是 9600×4=38400Hz。

  4、cs:芯片总片选信号输入引脚,低电平有效。

  5、rd,wr:单片机向芯片读写的控制引脚,低电平有效。

  6、rxd1,rxd2,rxd3,rxd4:串行输入引脚。

  7、INT0:中断信号输出引脚,下降沿有效。

  8、odd_check1_o,odd_check2_o,odd_check3_o,odd_check4_o:送给单片机的奇偶校验标志信号输出引脚。

  9、rdfull:数据缓冲器标志信号输出引脚,该信号用‘1’和‘0’表明是否有收发器的缓存了数据尚未被提取。

  10、rdrdy1,rdrdy2,rdrdy3,rdrdy4:引脚分别用于表明各个收发器是否正忙,从该收发器开始接收数据到数据被单片机读取整个过程,其相应的rdrdy引脚输出‘1’。

  11、txd1,txd2,txd3,txd4:串行数据输出引脚。

  12、tdempty:该引脚输出为‘1’时表明芯片已没有正在发送或者是将要发送的数据。

  13、txrdy1,txrdy2,txrdy3,txrdy4:分别为收发器 1、2、3和 4可否进行发送控制输入端,输入为‘1’表示可以进行串行数据的发送。

  14、d_inout(7:0):双向数据总线。应与单片机 p0口相连。

  15、addr_h(7:0):地址高 8位。

4程序的综合及仿真

4.1 设计综合及实现

  本设计综合使用的工具是 Xilinx公司的 XST,它是内嵌在 ISE7.2i里面的。综合过程将把软件设计的 HDL描述与硬件结构挂钩,是将软件转化为硬件电路的关键步骤。本设计综合时选用的芯片是Spartan-ⅡE系列的xc2s100e。

  综合工具生成网表文件后,就可以实现设计,实现的步骤有:转换(将多个设计文件合并为一个网表),映射(将网表中的逻辑符号(门)整合到物理元件中),布局布线(将元件放到器件中,并将它们连接起来,同时提取出时序数据,并生成各种报告)。

4.2 综合布线结果及分析

多串口单一中断源的芯片设计

多串口单一中断源的芯片设计

  图 4为资源利用结果图表,由图可见,slices的占用量为 722个,占该芯片 slices总数的 60%。slice registers的使用数量为 591个,占该芯片总数的 24%。4输入查找表的使用总量是 915个,占该芯片查找表总数的 38%。

  4.3 布线后仿真

  本文中所举出的测试均为布线后的仿真测试,该仿真的仿真延时文件包含的延时信息最全,不仅包含了门延时,还包含了实际布线延时,所以布局布线后仿真最准确,能够较好的反映芯片的实际工作情况。

多串口单一中断源的芯片设计

多串口单一中断源的芯片设计

  4.4测试结果及分析

  上面已经对各模块的各种功能进行了很多测试,为了更好地验证所设计的芯片在实际中使用的可靠性,我们有必要进行一次总体的测试,本次仿真测试共包括单片机 5次读标志,4次提取数据,1

  次发送数据。测试结果及分析如下图 5g所示:

多串口单一中断源的芯片设计

  测试结果我们还可以看到:

  1)芯片各收发器模块可以同时工作

  2)发送与接收可以同时进行

  3)接收缓存正常,并且在接收数据不足 8字节超时后时会自动停止缓存,然后向芯片中断管理模块提出中断请求

  4)中断信号能够正常输出

  5)各收发器的中断请求无遗漏

  6)收发器模块的数据被读取完毕之后,中断标志自动清除,芯片不再发出中断请求信号。

  5 结 论

  本文设计了一种实现高效的芯片。本设计的功能特点:在中断管理方面,利用单一的中断源来管理多个扩展串口,并保证多个串口中断的无漏检测与服务;在数据传送方面,实现串行数据的接收和发送,并且按照数据传送是否有奇偶校验位分为两种工作模式,在接收时具有数据缓存的功能。并且上述各个功能模块在单一的可编程逻辑器件芯片就能实现。

  上述整个过程设计均采用 VHDL编程实现,比以往电路手工设计的方法更加灵活,具有比较大的发展空间。文中分别利用 ModelSim和 ISE对程序进行仿真和综合布线,在仿真平台上验证了设计的可行性,具有较好的应用前景。

  本文作者创新点:单一中断源的芯片,利用单一的中断源来管理多个扩展串口,各个功能模块在单一的可编程逻辑器件芯片就能实现。



评论


相关推荐

技术专区

关闭