基于FPGA的CPU与保密机之间的UART通信设计

来源 :无线互联科技 | 被引量 : 0次 | 上传用户:mysticlisten
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:在卫星通信系统的信道加密业务中,通常使用FPGA的UART通信实现CPU与保密机之间的交互。文章介绍的UART通信模块,是一种新颖的串口发送和接收的FPGA设计,仅由Verilog中简单的always块就能实现,证明此方法的操作简单且实用性强。仿真测试验证收发模块可实现可靠的全双工串口通信,更容易满足实际设计的需求。
  关键词:FPGA;UART通信;always块
  0 引言
  在卫星通信系统的加密业务中,CPU通过发送不同指令控制/查询保密机的同时,保密机又要向CPU上报状态,由FPGA实现UART串口功能(Universal Asynchronous Receiver/Transmitter)是它们之间通信的一种常用方式,UART将要传输的信息在串行通信与并行通信之间加以轉换[1-3]。其处理方式是FPGA采用状态机设计,并在每一位数据的中点进行数据采样[4-5]。本文设计的基于FPGA的UART通信模块,省去了16倍波特率时钟和复杂的状态机,可实现同样的串口功能及性能。
  FPGA在CPU与保密机之间的串行通信接口电路的设计采用了自顶而下的设计方法,主要分为UART发送模块、UART接收模块两大模块。
  1 UART发送模块设计
  当CPU控制/查询保密机状态时,在固定波特率       (38 400 Hz)下,FPGA将CPU发送的控制信令转化成UART帧数据格式串行数据流发送给保密机,UART串口发送时序如图1所示。
  根据图1设计了串口发送程序,伪代码示例如下,其中系统主时钟为60 MHz,波特率为         38 400 Hz,且使能uart_en与数据uart_din对齐,并均与主时钟上升沿对齐。
  parameter CLK_FREQ = 60_000_000;//主时钟parameter UART_BPS = 38400;//波特率
  parameter BPS_CNT = CLK_FREQ/UART_BPS;
  //找到使能uart_en的上升沿
  assign en_flag =( ~ uart_en_d1 ) & uart_en_d0;
  uart_en_d0 <= uart_en;
  uart_en_d1 <= uart_en_d0;
  //通过计数器控制tx_flag的长度为9.5个波特率周期
  if ( en_flag )                                           tx_flag <= 1’d1;
  else if ( ( tx_cnt == 4’d9 ) && ( clk_cnt == BPS_CNT/2 - 1’b1 ) )   tx_flag <= 1’d0;
  //一个波特率周期
  if ( tx_flag & clk_cnt < BPS_CNT - 1’b1 )                     clk_cnt <= clk_cnt + 1’d1;
  //串口一次发送的比特数
  if ( tx_flag & clk_cnt == BPS_CNT - 1’b1 )                    tx_cnt <= tx_cnt + 1’d1;
  //输出串口数据及起始位和停止位
  if ( tx_flag && ( clk_cnt == 16’d0 ) )
  case ( tx_cnt )
  4’d0 : uart_txd <= 1’d0;4’d1 : uart_txd <= tx_data[0];4’d2 : uart_txd <= tx_data[1];
  4’d3 : uart_txd <= tx_data[2];4’d4 : uart_txd <= tx_data[3];4’d5 : uart_txd <= tx_data[4];
  4’d6 : uart_txd <= tx_data[5];4’d7 : uart_txd <= tx_data[6];4’d8 : uart_txd <= tx_data[7];
  4’d9 : uart_txd <= 1’d1;
  根据接口时序要求:首先,将计数器clk_cnt对主时钟计数,并计数到波特率周期后清零,即在0 ~ BPS_CNT-1范围内循环计数。其次,tx_flag作为串口输出数据使能,故在数据使能uart_en上升沿置高,然后在满足条件(tx_cnt == 4’d9 & clk_cnt == BPS_CNT/2 - 1’b1)时置低,此时正好满足tx_flag长度为9.5个波特率周期;其中tx_cnt在0~9计数,为保证每次计数为1bit有效数据宽度,tx_cnt仅在(clk_cnt == BPS_CNT - 1’b1),即一个波特率周期时累加。最后,在计数器tx_cnt为0~9时依次输出起始位(0)、8位数据位(从低到高)、停止位(1)。   2 UART接收模块设计
  当CPU查询保密机状态后,为接收保密机发送的UART串行数据,可通过FPGA捕获保密机发送UART串行数据,根据UART串口接收时序(见图2),串转并得到的数据发送给CPU。
  由图2可知,在一定波特率下,FPGA根据UART串口接收时序依次采集起始位、数据位、停止位。设计的串口接收程序伪代码示例如下:
  parameter CLK_FREQ = 60_000_000;//主时钟parameter UART_BPS = 38400;//波特率
  parameter BPS_CNT = CLK_FREQ/UART_BPS;
  //找到串口数据uart_rxd的下降沿
  assign start_flag = uart_rxd_d1 & ( ~uart_rxd_d0 );
   uart_rxd_d0 <= uart_rxd;
   uart_rxd_d1 <= uart_rxd_d0;
  //通过计数器控制rx_flag的长度为9.5个波特率周期
  if ( start_flag )                                          rx_flag <= 1’d1;
  else if ( ( rx_cnt == 4’d9 ) && ( clk_cnt == BPS_CNT/2 - 1’b1 ) )    rx_flag <= 1’d0;
  //一个波特率周期
  if ( rx_flag &clk_cnt < BPS_CNT - 1’b1 )                       clk_cnt <= clk_cnt + 1’d1;
  ////串口一次接收的比特數
  if ( rx_flag & clk_cnt == BPS_CNT - 1’b1 )                      rx_cnt <= rx_cnt + 1’d1;
  //在中点采集数据
  if ( rx_flag && ( clk_cnt == BPS_CNT/2 ) )
  case ( rx_cnt )
  4’d1 : rx_data[0] <= uart_rxd_d1;4’d2 : rx_data[1] <= uart_rxd_d1;
  4’d3 : rx_data[2] <= uart_rxd_d1;4’d4 : rx_data[3] <= uart_rxd_d1;
  4’d5 : rx_data[4] <= uart_rxd_d1;4’d6 : rx_data[5] <= uart_rxd_d1;
  4’d7 : rx_data[6] <= uart_rxd_d1;4’d8 : rx_data[7] <= uart_rxd_d1;
  //输出串口接收完成标志uart_done
  if ( rx_cnt == 4’d9 )                     uart_done <= 1’d1;
   uart_data <= rx_data;
  根据接口时序要求:首先,通过uart_rx的下降沿start_flag捕获串口的起始位start bit,并同时将串口接收使能rx_flag置高,经过9.5个波特率周期后(rx_cnt == 4’d9 & clk_cnt == BPS_CNT/2 - 1’b1)置低,其中rx_cnt和clk_cnt两个计数器与发送端保持一致。其次,在rx_cnt为1~8时,同时满足在一个波特率周期的中点(clk_cnt == BPS_CNT/2)位置时,进行串口数据的采样,采样顺序为从低位到高位。最后,在停止位处(rx_cnt == 4’d9),输出接收数据和捕获使能信号送给CPU。
  3 仿真测试
  为了验证2个UART串口测试模块的准确性,搭建仿真自环的条件,即将串口接收模块完成标志uart_done的下降沿作为串口发送模块的发送标志,仿真结果如图3所示。模拟发送3帧数据(0x7E,0x33,0x55)由UART发送模块接收,并转串后直接给接收模块,可以看出在串口接收模块uart_data解码输出的3帧数据与模拟输入数据一致,说明UART串口收发模块通信正确。
  4 结语
  本文介绍了一种基于FPGA实现CPU与保密机之间的UART模块设计,通过UART接口协议,分别设计了FPGA的UART串口发送时序和UART串口接收时序,采用简单的always块就实现了收发功能。由于采用了一个波特率周期的计数器,接收模块可在每个串行数据的中点进行采样,保证了数据传输的准确性。最后,通过软件仿真,进行收发自环,实现了UART数据的收发功能,这种简单可靠的设计对FPGA在uart串口通信的开发中具有较强的可操作性和应用价值。
  [参考文献]
  [1]张继国.一种利用FPGA实现串口通信的设计[J].电子世界,2020(12):124-125.
  [2]朱玉成,董文学.基于FPGA的串口通信电路设计与实现[J].通讯世界,2018(3):41-42.
  [3]王闽.基于FPGA的口通信设计与实现[J].通讯世界,2017(2):52.
  [4]王媛斌.FPGA与PC通信的UART串口设计[J].兰州工业学院学报,2020(9):60-65.
  [5]陈孟春.基于有限状态机的高速串口通信收发器的FPGA设计[J].计算机应用与软件,2017(12):178-183.
  (编辑 姚 鑫)
其他文献
随着我国经济和互联网的快速发展,网络购物的热度居高不下,消费者的选择也越来越多,电商的卖家不推广就没有流量和转化率。电商广告的复杂度也逐渐由2D的扁平化向着3D方向改变,以此吸引消费者的眼球。Cinema 4D三维软件是3D电商广告开发中常见的工具,文章探讨其在电商广告中渲染器和高级特效的相关应用,为电商卖家更好地引入流量和提高转化率探索一条新的路径。
摘 要:随着增量市场的压力逐渐加大,校园迎新市场作为新增市场的主要来源,竞争日趋激烈。但是,当前业务受理量大、业务受理集中、业务受理效率低、渠道单一等问题,不利于运营商在校园迎新市场竞争中占据有利位置。文章研究了提升系统的可靠性、缩短业务受理时长、拓宽业务受理渠道的策略,以期提高客户的满意度。  关键词:电信运营商;高校迎新;CRM客户端;渠道  1 研究背景  目前三大运营商市场份额抢占竞争激烈
收藏、研究和教育是博物馆的三大职能.近年来,随着“博物馆热”的来袭,教育逐渐成为博物馆的核心职能,博物馆儿童教育也逐渐受到重视.儿童作为参观博物馆的特殊观众,由于本身
摘 要:革命纪念馆文旅产业会计监督是对运行开放管理工作、财务会计核算进行全面而系统的监控和经常性的检查,便于及时发现并纠正景区文旅产业经营与免开场馆运行开放的偏差和会计工作中可能存在问题,确保文化与旅游结合下的革命纪念馆健康有序且高效地运行。文旅融合后加强对革命纪念馆的会计监督不仅可以维护财经纪律和社会经济秩序,对场馆免费开放,建立规范的景区运行工作秩序,也具有重要作用。  关键词:文旅融合;革命
摘 要:计算机网络在给人们生活与工作带来便利的同时,也存在较多的安全问题,容易造成计算机信息的丢失、被窃取等,甚至还会导致计算机系统瘫痪,产生更大的经济损失。当下计算机网络运行中的问题主要是网络内部与外部问题,其中内部问题主要体现在线路品质影响、计算机操作不科学等,外部问题则体现在受到网络黑客的恶意攻击、计算机软件病毒产生的危害方面。为了进一步提高计算机网络运行的安全性与稳定性,加强计算机网络安全
摘 要:一直以来,在各大院校或者教育培训机构中,计算机机房是必不可少的基础教育设施,而机房的建设普遍使用主机加显示器,或者一体机等形式的具有独立运算能力的计算机终端来布置。近年来,随着大数据技术不断发展及各种云计算技术的成熟运用,以云桌面形式出现的新型机房大规模实地布置,使传统机房与云桌面机房的新建成为不可避免的问题,文章通过对比两种机房建设的优缺点进行分析,解决机房建设过程中选择方式带来的困扰。
摘 要:文章探究了“二八定律”在人机交互界面菜单中的应用,以优化菜单选项排序,提高用户与菜单交互的效率。文章以计算机的应用菜单为研究对象,分别对其菜单各选项的使用频率进行调研,统计分析用户使用每个菜单项的频率。结合调研所得数据得出菜单选项中存在着“二八定律”,并按照这种不平衡关系对菜单排序进行优化。与其他排序方式相比,基于“二八定律”的排序选择时间期望值应是最小的。基于“二八定律”的概率分布思想可
摘 要:文章以安全域的划分为网络架构设计思想,详细分析了目前市烟草专卖局(公司)网络通信安全现状,阐述了基于安全域的网络安全防护体系架构,结合市局信息系统实际情况,将网络安全域通过垂直分层、水平分区两部分,从安全性、先进性、可开放性、可管理性、可持续性5个层面,对安全域进行网络优化改造。  关键词:安全域;网络安全架构;网络优化  1 研究背景及现状  1.1 研究背景  随着浙江烟草专卖、商业系
摘 要:地球资源在近些年来被不断开采,导致能源危急日益临近。为避免能源发生枯竭,需要不断研究能源的再生与可持续利用。风-光互补发电系统,作为借助太阳能和风能实现互补的系统,为缓解能源枯竭与环境恶化发挥了重要作用。而风-光互补发电系统的应用过程中,还存在很多的不足,例如对电压的控制以及能源的转化等,还需要不断地研究和改进,从而为节能减排做出更大贡献。文章介绍了风-光互补发电系统的概念及其优势,阐述了
摘 要:文章论述了一种利用外设HC-SR04超声波组件设计的基于MSP430G2553的超声波倒车雷达监测系统。系统能实时检测汽车尾部与障碍物的距离,并在MSP430G2553拓展板上用LCD动态显示实时距离,实现了对当前测量距离的显示,对倒车安全有着不可替代的作用。经实验验证,该系统最大测量距离为3.5 m,并且具有成本低廉、非接触性好、反应速度快、可靠性强、适应性好、操作方便的特点。  关键词