简易类型识别器练习_第1页
简易类型识别器练习_第2页
简易类型识别器练习_第3页
简易类型识别器练习_第4页
简易类型识别器练习_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、明德扬科技教育简易类型识别器练习网:官淘宝:群目录pkt_check 模块3pkt_check_tb 模块10明德扬科技公司主要是以 FPGA 为,专业从事 FPGA 配套开发板、FPGA 培训班或其他培训、研发 FPGA 技术开发、承接 FPGA 项目开发。欢迎加入明德扬 FPGA 和 ASIC97925396。明德扬以 PDF 格式提供源代码,是为了鼓励大家多思考,不要拿来就用,否则是学不好 FPGA 的。本代码对应的设计思路,请参考明德扬课程。pkt_check 模块module pkt_check(clk rst_ndin,dout_vld,dout,dout_sop,dout_eop

2、);/参数定义parameterDATA_W = 8;parameter parameter parameter parameter parameter parameter/输入信号定义input inputHEAD TYPE LEN DATAFCS= 0;= 1;= 2;= 3;= 4;CTRL_PKT_LEN=64;clk rst_ndin;input DATA_W-1:0/输出信号定义 outputDATA_W-1:0 outputoutputoutputdout dout_sop; dout_eop;dout_vld;/输出信号 reg 定义reg reg regregDATA_W-1

3、:0dout dout_sop; dout_eop;dout_vld;reg 2:0reg 2:0reg 3:0 reg reg15:0 regreg1:0sse_c;e_n;t; head_flag;t;t;t;always(edge clk or negedge rst_n)beginif(rst_n=1b0)beginse_c = HEAD;endelse beginse_c = se_n;endendalways(*)begin case(se_c)HEAD:beginif(t=9 & din=8hd5)beginse_n = TYPE;endelse beginse_n = HEAD

4、;endend TYPE:beginif(din=0)beginse_n = DATA ;endelse beginse_n = LEN;endend:beginif(LENt=1)beginse_n = DATA;endelse beginse_n = LEN;endend:beginif(DATAt=0)begine_n = FCS;sendelse beginse_n = DATA;endend:beginif(FCSt=3)begine_n = HEAD;sendelse beginse_n = FCS;endendendcaseendalways(edge clk or negedg

5、e rst_n)beginif(rst_n=1b0)begint = 0;endelse if(se_c=HEAD) begin if(head_flag=0) beginif(din=8h55)begint =endelse begint = 0;endendt + 1;else if(head_flag=1)beginif(din=8hd5)beginif(t=9)begint = 0;endelse begint =t + 1;endendelse if(din=8h55) begint = 1;endelse begint = 0;endendendelse begint = 0;en

6、dendalways(edge clk or negedge rst_n)beginif(rst_n=1b0)begin head_flag = 1b0;endelse if(se_c=HEAD) begin if(head_flag=1b0)beginif(din=8h55)head_flag = 1b1;endelse beginif(din=8h55)begin head_flag = 1b1;endelse beginhead_flag = 1b0;endendendelse beginhead_flag = 1b0;endendalways(edge clk or negedge r

7、st_n)beginif(rst_n=1b0)begint = 0;endelse if(se_c=TYPE & din=0) begint = CTRL_PKT_LEN-1;end else if(sif(e_c=LEN)begin t=0)begint = t7:0,din;endelse begint = t7:0,din-1;endendelse if(t!=0)begint =t - 1;endendalways(edge clk or negedge rst_n)beginif(rst_n=1b0)begint = 1b0;endelse if(se_c=LEN) begint =

8、 t;endelse begint = 1b0;endendalways(edge clk or negedge rst_n)beginif(rst_n=1b0)begint = 0;endelse if(se_c=FCS)beginif(t=3)t = 0;elset =t + 1;endendalways(edge clk or negedge rst_n)beginif(rst_n=1b0)begin dout = 0;endelse begindout = din;endendalways(edge clk or negedge rst_n)beginif(rst_n=1b0)begi

9、n dout_vld = 1b0;endelse if(se_c != HEAD) begin dout_vld = 1b1;endelse begindout_vld = 1b0;endendalways(edge clk or negedge rst_n)beginif(rst_n=1b0)begin dout_sop = 1b0;endelse if(se_c=TYPE) begin dout_sop = 1b1;endelse begindout_sop = 1b0;endendalways(edge clk or negedge rst_n)beginif(rst_n=1b0)beg

10、in dout_eop = 1b0;endelse if(se_c=FCS & dout_eop = 1b1;endelse begint=3) begindout_eop = 1b0;endendendmodulepkt_check_tb 模块timescale1ns/1nsmodulepkt_check_tb;parameter parameter parameter parameter parameter parameter parameter parameter parameter parameter parameter parameterparameterSE_WID=6;8;3;7

11、;2;16;3;6b0000_01;6b0000_10;6b0001_00;6b0010_00;6b0100_00;6b1000_00;DATA_WID WAIT_WID LOAD1_WID LEN_WID LOAD2_WID FCS_WID WAIT PKT_TYPE PLAYLOAD1 LENGTH PLAYLOAD2FCSreg reg reg wire wire wirewireclk; rst_n; din; vld_out; dout; sop;eop;DATA_WID-1:0DATA_WID-1:0wire wire wirewirevld_out1; dout1; sop1;e

12、op1;DATA_WID-1:0regcom_flag ;pkt_checkuut_message_check1(.clk.rst_n.din.dout_vld.dout.dout_sop.dout_eop(clk),(rst_n),(din), (vld_out1), (dout1),(sop1),(eop1);initial begin #10clk=1; forever #5clk=clk;endinitial begin rst_n=1; #5rst_n=0; #5rst_n=1;endinitial begin #2din=1;/开头发送 1 个 0 x55,再发送 5 个 0 x5

13、5d5,pkt_type=0 #10din=8h55; repeat(5) begin#10din=8h55; #10din=8hd5; end#10din=0; repeat(68) begin#10din=din+1; end/间隔 3 个时钟周期repeat(3) begin #10din=10;end/出现 h55d5,h5555,5 个h55d5 情况pkt_type=0#10din=8h55; #10din=8hd5; #10din=8h55; #10repeat(5) begin#10din=8h55; #10din=8hd5; end#10din=0; repeat(68) b

14、egin#10din=din+1; end/紧接着上一个报文,pkt_type=0repeat(5) begin#10din=8h55; #10din=8hd5; end#10din=0; repeat(64) begin#10din=din+1; endrepeat(2) begin#10din=8h55; #10/din=8hd5; end#10din=0; repeat(10) begin#10din=din+1; end/无效数据/开头发送 2 个 0 x55d5,1 个 0 x55,再发送 5 个 0 x55d5,pkt_type=1,length=10 repeat(2)begin

15、#10din=8h55; #10din=8hd5; end#10din=8h55; repeat(5) begin#10din=8h55; #10din=8hd5; end#10din=1; #10din=0; #10din=10; repeat(10) begin#10din=din+1; end/开头发送 2 个 0 x55d5,再发送无关数据,然后发送 5 个 0 x55d5,pkt_type=1,length=1 repeat(2)begin#10din=8h55;#10din=8hd5; end repeat(3) begindin=4; end repeat(5) begin#10

16、din=8h55; #10din=8hd5; end#10din=1; #10din=0; #10din=1; repeat(5) begin#10din=din+1; end#100;repeat(5) begin#10din=8h55; #10din=8hd5; end#10din=1; #10din=8h01; #10din=8h2c; repeat(304) begin#10din=din+1;endendalways(edge clk or negedge rst_n)beginif(rst_n=1b0)begin com_flag = 0;endelse beginif(vld_out=vld_out1)begin com_flag = 0;endelse begincom_flag = 1; end if(dout=dout1)begincom_fla

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论