序列检测器设计_modelsim_verilog_实验报告.docVIP

序列检测器设计_modelsim_verilog_实验报告.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
序列检测器设计_modelsim_verilog_实验报告

实验四-序列检测 一、实验目的: 1.实验目的:通过学习硬件编程语言,掌握一般时序逻辑分析的方法。 2.学会使用Verilog语言编写实现任意序列检测。 3.学会使用Verilog编写测试文件testbech的方法并在Modelsim中实现时序仿真。 二、实验设备 1.PC机一台 2.Modelsim软件 三、实验内容: 序列检测器是能够与从二进制码流中检测出一组特定序列的信号的时序电路。通过接受的序列号与检测其预设值比较,当检测到输入信号匹配时,输出响应的指示。 设计序列检测器,要求能够识别序列“10010”。din为数字码流的输入,z是检测标记的输出,高电平表示“发现指定序列”,低电平表示“没有发现指定的序列”。 检测序列“10010”时序输入与输出示例如下: T1234567891011121314151617181920…x00011001001000010010…z00000000100100000001…Table  SEQ Table \* ARABIC 1 - 序列检测时序输入与输出示例 1.打开Modelsim软件,切换目录至常用位置,这里选择D:\seqdet。(注,在D:\seqdet目录下一保存有序列检测文件seqdet.v和测试文件seqdet_tb.v,源程序在附录里) 2.然后新建工程,File -New-Project,建立工程工程为seqdet,设置如下,并在接下来的步骤中添加序列检测文件seqdet.v和测试文件seqdet_tb.v。 4.编译文件 编译无误后,进行仿真 5.文件仿真 在弹出的窗口中选择Design-work-seqdet_tb,默认选中优化选项。选择OK 6.添加信号到wave视图中。在仿真状态下,切换到左侧导航窗口到object视图下,添加信号T,clk,rst,x,z,q到wave窗口中, 添加完成后如图所示: 7.运行仿真至1000ns,,波形图显示如图所示: 8.结果分析:对上述图形分析如下, 当rst复位信号为高电平时,输入使能,输入的x序列为x:0001_1001_0010_0001_0010_1000。用蓝色表示的为第一次检测到匹配序列“10010”,黄色表示为第二次匹配序列,紫色表示为第三次匹配序列。z分别在这三处匹配时输出高电平,其他为低电平,实现了序列检测的功能。 四,程序: ①源程序模块seqdet.v : module seqdet ( input wire x, //信号输入 input wire clk, //时钟信号 input wire rst, output wire z, output reg [4:0] q //序列输出 ); wire [4:0] q_next; assign q_next ={q[3:0],x}; assign z = (q_next== 5b10010) ? 1b1:1b0; always @ (posedge clk,negedge rst) if(!rst) q = 5d0; else q = q_next; endmodule ②测试程序模块seqdet_tb.v `timescale 1ns/1ns module seqdet_tb; localparam T =20; reg clk,rst; reg [23:0] data; wire z,x; wire [4:0] q; assign x = data[23]; initial begin clk =0; rst =1; #2 rst =0; #30 rst =1; data =20b1100_1001_0000_1001_0100; #(T*1000) $stop; end always #T clk = ~clk; always @ (posedge clk) #2 data = {data[22:0],data[23]}; seqdet U1 ( .x(x), .z(z), .clk(clk), .q(q), .rst(rst) ); endmodule 五、实验总结: 通过本次实验,对Verilog硬件描述语言有了进一步认识,学会编写verilo

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档