版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 19866-2026焊接工艺规程及评定的一般原则
- 企业全面预算控制实施方案
- 关于员工绩效考核标准修改的通知4篇范本
- 游戏创意落地评估表
- 电商行业供应链协同效率提升指南
- 智能硬件产品用户使用场景优化手册
- 企业危机应对策略与决策流程优化方案
- 关于2026年合作项目启动会的安排通知函(3篇)范文
- 新闻传媒行业编辑内容创新与传播力绩效衡量表
- 儿童溺水自救与施救技巧手册
- GB/T 48666-2026电子病历版式文档技术要求
- 2026年体育用品设备出租行业市场深度调研报告及未来五至十年技术路径与产业化前景
- 医学生基础医学重症肌无力查房课件
- 小小科学家《生物》模拟试卷(附答案)
- 集中供电智能应急照明疏散指示系统施工方案
- JJG 596-2026 安装式交流电能表检定规程
- 2026年人教版初中七年级数学上册单项式多项式判断卷含答案
- 住院病案首页数据填写规范培训考核试题(附答案)
- 工程力学第四版张秉荣主编课后习题解析
- 动物疫病防治员题库(含参考答案)
- 贷款提前还款通知文本模板
评论
0/150
提交评论