0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过FPGA与VHDL设计三线制同步串行通信控制器并进行功能仿真

电子设计 作者:电子设计 2018-10-07 11:12 次阅读

同步串行通信在航天工程领域中有着广泛的应用,其中,三线制同步串行通信以其连线少、操作方便、通信速度快等特点,被成功应用在与外围串行设备的数据通信中。

目前大多数微控制器微处理器都配置有同步串行通信接口,但含有三线制同步串行通信接口的微控制器或微处理器却不多,因此在需要应用三线制进行通信的场合,就需要对系统进行三线制同步串行通信接口的扩展,利用FPGA[2]可以实现三线制同步串行通信。由于FPGA具有工作速度高、可配置性强、灵活性好等突出优点,可以满足高速同步串行通信。根据三线制同步串行通信机制,通过采用Xilinx公司的FPGA器件[3]设计并实现了三线制同步串行通信控制器的IP软核。该控制器具有高速、易调试、配置灵活等优点,有效利用了FPGA内部硬件资源,减小了系统体积,缩短了系统开发周期。

1 三线制同步串行通信机制介绍

在计算机领域内,有串行传送和并行传送两种数据传送方式。并行数据传送中,数据在多条并行1 bit宽的传输线上同时由源端传送到目的端,这种传送方式也称为比特并行或字节串行。串行数据传送中,数据在单条1 bit宽的传输线上,逐位按顺序分时传送。

同步传输过程中,发送端和接收端必须使用共同的时钟源才能保证它们之间的准确同步。同步传输时,在帧同步脉冲信号触发下,串行数据信息以连续的形式发送,每个时钟周期发送1 bit数据。因此,同步传输时数据成批连续发送,信息字符间不留任何空隙,它严格按照约定的速率发送和接收。为达到接收和发送的准确同步,通常在发送端利用编码器把要发送的数据和发送时钟组合在一起,通过传输线发送到接收端,在接收端再用解码器从数据流中分离出接收时钟。常用的编码解码器有曼彻斯*和NRZ-L码。

三线制同步串行通信采用的码型为NRZ-L码,其时序逻辑关系如图1所示。

图1三线制同步串行通信逻辑关系图

三线制同步信号包括:帧同步信号、时钟信号和串行数据,通常采用中断方式接收。串行数据接收或发送时,首先帧同步信号先触发一个瞬时脉冲,之后保持低电平有效,数据在时钟信号的上升沿保持稳定,并开始采样,每个时钟周期接收或者发送一位串行数据,直至数据接收或者发送完毕,系统再转而处理其他相关操作。在数据发送或接收的整个过程中,帧同步信号一直处于低电平不变。

2 三线制同步串行通信控制器IP核设计

本设计最终目标是用硬件描述语言VHDL[4]构建一个三线制同步串行通信控制器,也就是建立一个基于FPGA实现的、可复用的IP核[5]。同时,可以将设计好的IP核保存,作为一个子模块应用于其他需要此模块的系统中,从而减轻大型设计的工作量,缩短开发周期。

2.1 三线制同步串行通信控制器IP核接口描述

本设计最终实现的目标是生成如图2所示的IP核接口封装。

通过FPGA与VHDL设计三线制同步串行通信控制器并进行功能仿真

图2 三线制同步串行通信控制器IP 核接口封装图

其中,三线制同步串行通信控制器IP核接口信号定义如表1所示。该IP核共有全局信号管脚8个,接收接口信号管脚和发送接口信号管脚各3个。

表1三线制同步串行通信控制器IP核接口信号描述

2.2 三线制同步串行通信控制器IP核电路结构设计

按照设计目标,根据需要实现的功能,可将三线制同步串行通信控制器结构划分成几个大的功能模块,这些模块独自完成一定的任务,结合起来实现通信控制器的整体功能。同时,划分模块功能后,可以更方便地用硬件描述语言VHDL对其进行描述。

如图3所示,根据设计要求,可将三线制同步串行通信控制器划分成3个主要功能模块:接口模块、接收模块和发送模块。

通过FPGA与VHDL设计三线制同步串行通信控制器并进行功能仿真

图3 三线制同步串行通信控制器结构图

(1)接口模块:用于各种全局信号的逻辑组合译码控制。同时,对输入的系统时钟进行时钟分频,为接收模块和发送模块提供串行同步时钟信号。

(2)接收模块:用于接收外围串行设备传来的串行数据,此功能模块的核心是接收FIFO和串/并变换两大模块,其中接收FIFO作为数据缓冲器暂存接收到的数据。在接收数据标志、接收移位寄存器和接收移位计数器的配合驱动下,串行数据按照MSB先、LSB后的顺序经过串/并变换后,并行数据被存储于接收FIFO中,等待中断响应后CPU对数据进行处理。

(3)发送模块:用于向外围串行设备发送串行数据,此功能模块的核心是发送FIFO和并/串变换两大模块。CPU将要发送的数据先放到系统的并行数据总线上,并被暂存于发送FIFO中,在响应发送中断信号后,并行数据按照MSB首发、LSB后发的顺序,在控制信号驱动下,经过并/串变换,发送的数据最终以串行数据格式被送往外围串行设备端口

三线制同步串行通信控制器IP核实体名接口用VHDL语言定义如下:

ENTITY SerSendRec IS

PORT( Rst_n:IN STD_LOGIC

Clk:IN STD_LOGIC;

Cs:IN STD_LOGIC;

Strobe:IN STD_LOGIC;

Rw:IN STD_LOGIC;

Addr:IN STD_LOGIC_VECTOR(2 DOWNTO 0);

Rdata:IN STD_LOGIC;

Rclk:OUT STD_LOGIC;

Rgate:OUT STD_LOGIC;

Int:OUT STD_LOGIC;

Sdata:OUT STD_LOGIC;

Sclk:OUT STD_LOGIC;

Sgate:OUT STD_LOGIC;

Data:INOUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END SerSendRec;

3 仿真与验证

利用Xilinx ISE和ModelSim SE工具平台对三线制同步串行通信控制器IP核进行综合和功能仿真。数据发送仿真波形如图4所示,数据接收仿真波形如图5所示。可以看出,仿真结果完全正确,符合设计的预定目标。

图4 数据发送仿真波形

图5 数据接收仿真波形

从图4的仿真波形中可以看到,data信号线上是系统要向外围串行设备发送的并行数据,在各种控制信号逻辑组合满足情况下,系统响应发送中断信号Int后,CPU先将待发送的数据暂存在04H地址缓冲寄存器中,在帧同步脉冲信号Sgate正脉冲触发下,每个Sclk周期发送一位串行数据Sdata。图中并行数据99H和E3H对应的串行数据分别为“10011001”和“11100011”。

同理,从图5可知,当开始接收数据时,在Rgate正脉冲触发下,Rdata数据信号线上待接收的二进制串行数据通过串/并变换成“11101010”和“11010111”,并分别暂存在07H和06H所对应的地址缓冲寄存器中,在接收中断信号Int响应下,将对应的并行数据“EA”和“D7”传送到系统数据总线上,CPU对数据进行处理。

本文在对三线制同步串行通信机制进行介绍的基础上,对三线制同步串行通信控制器IP核进行了结构划分和详细设计,并结合Xilinx公司的FPGA器件,采用VHDL硬件描述语言,对设计方案进行了仿真与验证,通过功能仿真波形得出了设计方案的正确性,并被成功用于航天某工程项目中。因其兼具较高的数据传输率和IP核的可移植性,可以预见,其在通信领域中将具有更加广阔的发展空间。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21320

    浏览量

    593173
  • 控制器
    +关注

    关注

    112

    文章

    15223

    浏览量

    171172
  • vhdl
    +关注

    关注

    30

    文章

    815

    浏览量

    127683
收藏 人收藏

    评论

    相关推荐

    FPGA干货分享】基于FPGA的LBS控制器设计

    个高效、可靠的LBS控制器来实现FPGA和PEX8311的通信。如图1所示。本系统的控制的核心是LBS控制器,该
    发表于 01-29 14:09

    如何通过按键控制三线DCP器件?

    如何使用DCP器件?如何通过按键控制三线DCP器件?
    发表于 04-21 06:19

    怎么实现PID控制器VHDL-AMS行为级建模

    本文介绍VHDL-AMS的新概念和新特性。通过对PID控制原理进行数学分析,建立PID控制器的数学模型,实现PID
    发表于 05-06 07:59

    怎么实现基于CPLD的异步串行通讯控制器的设计?

    本文在对异步串行通信协议进行分析的基础上,根据实际工程的需要,对异步串行通信控制器
    发表于 05-28 06:53

    CH32V103基础教程46-SPI-单工通信(1条时钟线和1条双向数据线),主机发送从机接收

    本章教程主要在SPI单工通信方式下进行1条时钟线和1条双向数据线配置,并进行主机发送从机接收。 1、SPI简介及相关函数介绍SPI支持以
    发表于 04-25 16:47

    STM8的SPI进行通信的时候可以只使用三线传输吗?

    STM8的SPI进行通信的时候可以只使用三线传输吗
    发表于 10-09 06:41

    基于FPGA串行接收模块的设计

    为了使计算机能够通过串口控制FPGA 的输出信号,笔者根据异步串行通信的原理,设计了简便易行的FPGA
    发表于 09-24 15:52 18次下载

    LED控制VHDL程序与仿真

    LED控制VHDL程序与仿真分别介绍采用FPGA对LED进行静态和动态显示的数字时钟控制程序。1
    发表于 06-27 11:20 1425次阅读

    VHDL设计专用串行通信芯片

    VHDL设计专用串行通信芯片 一种专用串行同步通信芯片(该芯片内部结构和操作方式以INS8250为参考)的
    发表于 10-12 19:07 1730次阅读
    用<b class='flag-5'>VHDL</b>设计专用<b class='flag-5'>串行</b><b class='flag-5'>通信</b>芯片

    基于MSP430的三线串行接口通信系统

    通过研究三线串行接口的构成原理,设计了一种基于MSP430单片机和FPGA三线串行接口测试仪。
    发表于 11-22 09:00 4097次阅读
    基于MSP430的<b class='flag-5'>三线</b><b class='flag-5'>串行</b>接口<b class='flag-5'>通信</b>系统

    基于FPGA的PCIe总线接口的DMA控制器的实现并进行仿真验证

    本文实现的基于FPGA的PCIe总线接口的DMA控制器是在Altera PHY IP和Synopsys Core IP的基础上实现的,利用Synopsys VIP验证环境进行功能
    的头像 发表于 01-11 10:57 1.1w次阅读
    基于<b class='flag-5'>FPGA</b>的PCIe总线接口的DMA<b class='flag-5'>控制器</b>的实现<b class='flag-5'>并进行</b><b class='flag-5'>仿真</b>验证

    MSP430和FPGA三线串行接口测试仪的设计详析

    通过研究三线串行接口的构成原理, 设计了一种基于 MSP430 单片机和 FPGA三线串行
    发表于 05-02 10:07 5次下载
    MSP430和<b class='flag-5'>FPGA</b>的<b class='flag-5'>三线</b><b class='flag-5'>串行</b>接口测试仪的设计详析

    VHDL-AMS的特性、仿真分析与在控制系统中的应用

    本文介绍VHDL-AMS的新概念和新特性。通过对PID控制原理进行数学分析,建立PID控制器的数学模型,实现PID
    的头像 发表于 11-14 08:03 2787次阅读
    <b class='flag-5'>VHDL</b>-AMS的特性、<b class='flag-5'>仿真</b>分析与在<b class='flag-5'>控制</b>系统中的应用

    采用VHDL预言实现基于Petri网的并行控制器设计并进行仿真验证

    Petri网是离散事件系统建模的重要工具,本文使用硬件描述语言VHDL实现了基于Petri网的并行控制器。文中通过一个液位控制系统实例具体介绍了这一方法,并
    的头像 发表于 04-22 08:10 1717次阅读
    采用<b class='flag-5'>VHDL</b>预言实现基于Petri网的并行<b class='flag-5'>控制器</b>设计<b class='flag-5'>并进行</b><b class='flag-5'>仿真</b>验证

    如何使用FPGA进行串行通信控制系统的设计

    在Altera Cyclone II 平台上采用“自顶向下”的模块化设计思想及VHDL 硬件描述语言,设计了串行通信控制系统。在Quartus II 软件上编译、
    发表于 11-07 11:18 6次下载
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>进行</b><b class='flag-5'>串行</b><b class='flag-5'>通信</b><b class='flag-5'>控制</b>系统的设计