名称:串行数据通信系统设计Verilog代码VIVADO仿真
软件:VIVADO
语言:Verilog
代码功能:
一种串行数据通信系统
图1为一种数据通信系统的示意图,图2为数据包格式。
图1 数据通信系统示意图
图2 数据包格式
要求1:系统为同步设计。TX模块通过串行通道向RX模块发送串行数据,串行数据中包含有效数据和无效数据,串行通道仅有1位时钟和1位数据,RX应正确接收TX发来的有效数据,不接收无效数据。自定义标记有效数据和无效数据的方法。
要求2:在要求1的基础上,TX模块以数据包的形式向RX发送串行数据,TX发送的数据包来源于TS0、TS1、TS2...TSn等源节点模块(n不小于3)。每个源节点模块产生独立的数据包,产生数据包的事件由输入端口控制(该输入端口有脉冲信号则产生一个数据包)。数据包格式如图2所示。header字段为数据包包头,格式自定义,但须包含
源节点模块序号信息。payload字段为需要传输的数据载荷,格式自定义。TX与各源节点模块之间的接口自定义。
要求3:RX接收TX发送的数据包,并对收到的数据包进行解析,识别数据包来源于哪个源节点模块,并将数据包中的payload(不含header)发送给具有相同序号的阱节点模块。RS0、RS1、RS2...RSn为阱节点模块(n不小于3,且与源节点模块数量相同)。RX与各阱节点模块之间的接口自定义。
要求4:编写Testbench,对设计进行仿真。其中一个源节点模块产生的数据包中的payload应包含学号、姓名拼音的ASCII码等信息,并在文档中有清晰截图和文字说明。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
部分代码展示:
//接收 module RX( input clock,//时钟 input data ,//数据 input reset,//复位 output [55:0] receive_data//接收到的有效数据 ); //数据包格式: //header:ABCD //paylod: 0123456789 //使用数据接收 reg [55:0] data_receive; always@(posedge clock or posedge reset) if(reset) data_receive<=56'd0;//复位 else begin data_receive[0]<=data;//将输入的数据移入最低位 data_receive[55:1]<=data_receive[54:0];//原数据整体左移1位 end
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1361
1053