首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于FPGA的SOC系统中的串口设计

基于FPGA的SOC系统中的串口设计

1 概述

  在基于FPGA的SOC设计中,常使用串口作为通信接口,但直接用FPGA进行串口通信数据的处理是比较繁杂的,特别是直接使用FPGA进行串口通信的协议的解释和数据打包等处理,将会消耗大量的FPGA硬件资源。

  为简化设计,降低硬件资源开销,可以在FPGA中利用IP核实现的嵌入式微处理器来对串口数据进行处理。

  本文中的设计采用了XILINX的FPGA,可选用的嵌入式微处理器IP核种类繁多,但基于对硬件资源开销最少的考虑,最终选用了Picoblaze。

  嵌入式微处理器PicoBlaze适用于Spartan-II/E、CoolRunner-II和Virtex系列FPGA,运行速度可达到40MIPS以上,提供49个不同的指令,16个寄存器,256个地址端口,1个可屏蔽的中断。其性能超过了传统的8bit微处理器。嵌入式微处理器Picoblaze的功能、原理见参考文献[1]。

  Picoblaze使用灵活,但其缺点是可寻址的存储空间非常有限,因此为满足实际需要本文同时也提出了使用片外SDRAM器件对其存储能力进行扩展的设计方法。

  2 串口收发接口设计

  2.1串口收发接口硬件设计

  嵌入式微处理器PicoBlaze本身并不具备串行接口,因此必须在FPGA中设计串口接收和发送模块并通过总线结构与Picoblaze连接。

  串口接收和发送模块的设计可采用成熟的IP核。实际设计中采用了XLINX的串口收发IP核,其特点是串口波特率,符号规则都可以灵活地定制,同时具有16字节的接收FIFO和16字节的发送FIFO。串口收发IP核的功能、原理见参考文献[2]。

  使用Picoblaze和串口收发IP核构成的串口收发系统结构见图1。

使用Picoblaze和串口收发IP核构成的串口收发系统结构

  在设计中,发送模块、接收模块和标志寄存器分别有不同的地址,Picoblaze通过地址端口对串口收发模块进行访问。设计中的标志寄存器,可用于指示发送模块和接收模块中FIFO的状态,Picoblaze通过查询标志寄存器来完成对串口数据的收发控制。

  2.2串口收发接口软件设计

  串口发送、接收子程序

  Picoblaze通过对标志寄存器的查询,根据FIFO的状态进行操作。串口发送和接收子程序流程见图2。

串口发送和接收子程序流程

  Picoblaze的编程,类似于汇编语言。

  串口发送子程序代码如下:

  (1)串口接收子程序

  receive:
INPUT s0,uartrxflag ;查询接收FIFO是否非空
AND s0,01
AND s0,s0
JUMP Z,receive ;若FIFO为空时继续查询
INPUT rxdata,uartrx ;若FIFO非空时读取数据
RETURN

  (2)串口接收子程序

  translate:
INPUT s0,uarttxflag ;查询发送FIFO是否为空
AND s0,01
AND s0,s0
JUMP NZ,translate ;若发送FIFO非空时继续查询
OUTPUTtxdata,uarttx ;若发送FIFO为空时写入数据
RETURN

这个版主不太冷 =========================== 我的bwin客户端 博客:http://blog.chinaecnet.com/u/20/index.htm
还是汇编呀.厉害呀
真诚让沟通更简单! QQ:767914192
版主的汇编好象象8086/8088那种汇编
返回列表