




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 销售业务员合同终止协议(2025版)
- 顶账房买卖合同范本(2025版)
- 货物进口报关代理合同范本(2025版)
- 《财务分析教学课件》课件
- 2025年江苏省南京市中考英语第一次模拟测试卷(一)(南京卷)(含解析)
- 2024-2025年山东省济南天桥区泺口实验学校第二学期八年级道德与法治期中考试试题(含答案)
- 铁路旅客运输服务铁路旅客运输服务质量规范76课件
- 铁路桥隧无损检测任务一认识无损测试课件
- 《Python程序设计基础》课件 第二章 Python 基础语法
- 《GB 16351-1996医用γ射线远距治疗设备放射卫生防护标准》(2025版)深度解析
- 2025年辽宁省丹东市公安局招聘辅警22人历年高频重点提升(共500题)附带答案详解
- 2025年山东海运股份有限公司招聘笔试参考题库含答案解析
- DBJ33T 1286-2022 住宅工程质量常见问题控制标准
- DBJ33T 1104-2022 建设工程监理工作标准
- 2025年社会治安综合治理工作计划范文
- 实习生安全教育培训
- 电影音乐欣赏知到智慧树章节测试课后答案2024年秋华南农业大学
- 《四川省声环境质量自动监测系统质量保 证及质量控制技术规范》 编制说明
- CEMS培训标准教材
- 职业培训机构收费及退款政策管理制度
- 重症肺炎相关知识课件
评论
0/150
提交评论