已知某传输流的包长为168字节,其数据格式如下:
0x47包头,0x00,0x00,id,数据
其中0x47为包头信号,id为一字节的数据,取值范围为0x00到0xff,数据为有效负载负载,负载中不会出现0x47
需要把流中的id映射成新的值,映射表有外部上位机实时设置RAM实现。
模块接口如下:
module id_map(
input rst_i,//复位信号
input clk_i,//数据时钟信号
input [7:0] dat_i,//输入数据信号
input vld_i,//输入数据有效信号
//映射表
input cpu_clk_i,//主控时钟信号
input [7:0] cpu_dat_i,//主控的RAM写
input [7:0] cpu_addr_i,//主控的ram写地址信号
input cpu_wr_i,//主控的ram写使能
//输出
output dat_o,//映射后的数据信号
output hdr_o,//映射后的数据包头信号
output vld_o//映射后的有效信号
);
RAM的读书延时为一个时钟周期,其接口信号如下:
module ram(
input wrclock,//ram写时钟
input [7:0] wraddress,//ram写地址
input wr_en,//ram写使能
input [7:0] data,//ram写数据
input rdclock,//ram读时钟
input [7:0] rdaddress,//ram读地址
input ed_en,//ram读使能
output [7:0] q,//ram读数据
);
要求:
1. 搞清楚模块的设计思路,说明上位机设置ram表的数据格式。
2. 完成verilog或者vhdl代码。
3. 简述该模块由上位机实时设置映射表可能带来的问题,如何处理?