基于verilog的序列检测
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八:序列检测一:序列检测的源程序:
module jiance(RST_N,CLK,Q,F);
input RST_N,CLK,Q;
output F;
reg F;
reg [6:0] s0,s1;
always@ (posedge CLK or negedge RST_N) begin
if(!RST_N) s0<=7'b1001101;
else
begin
s1=s1<<1;
s1[0]=Q;
if (s1==s0) F=1'b1;
else F=1'b0;
end
end
endmodule
二:序列检测的测试代码:
`timescale 1 ps/ 1 ps
module jiance_vlg_tst();
// constants
// general purpose registers
reg eachvec;
// test vector input registers
reg CLK;
reg Q;
reg RST_N;
// wires
wire F;
// assign statements (if any)
jiance i1 (
// port map - connection between master ports and signals/registers .CLK(CLK),
.F(F),
.Q(Q),
.RST_N(RST_N)
);
initial
begin
RST_N=0;
CLK=1;
Q=1;
#10 Q=0;
CLK=0;
#10 Q=0;
#10 Q=1;
CLK=1;
#10 Q=1;
#10 Q=0;
#10 Q=1;
end
initial $monitor($time,"%b",CLK,Q,F); endmodule
三:Transcript显示结果:
Loading work.jiance_vlg_tst
# Loading work.jiance
# ** Warning: (vsim-3009) [TSCALE] - Module 'jiance' does not have a `timescale directive in effect, but previous modules do.
# Region: /jiance_vlg_tst/i1
#
# add wave *
# view structure
# .main_pane.structure.interior.cs.body.struct # view signals
# .main_pane.objects.interior.cs.body
# run -all
# 011x
# 1000x
# 3011x
# 5010x
# 6011x
四:测试波形如下图所示:
Q=1;
Q=0;
Q=0;
Q=1;
Q=1;
Q=0;
Q=1;