首页 > 其他分享 >verilog 设计与综合实验报告(5)

verilog 设计与综合实验报告(5)

时间:2024-06-19 19:31:41浏览次数:11  
标签:seq clk negedge verilog rst 设计 实验报告 reg out

题目5:序列检测器

1、设计方案

2、程序代码

module sequential5_detector(
    input i_clk,
	input i_rst,
	input i_seq,
	output reg out
    );
parameter idle = 5'b00000,
            s1  = 5'b00001,
            s2  = 5'b00010,
            s3  = 5'b00100,
            s4  = 5'b01000,
            s5  = 5'b10000;    
reg [4:0] i_buffe;
reg [4:0]current_state;
always@(negedge i_clk or negedge i_rst)begin
    if(i_rst == 1'b1)begin
        current_state <= idle;
        out <=0;
        i_buffe <=0;
    end
    else begin
        case(current_state)
            idle:begin
                 current_state<=s1;
                 out <=0;
                 i_buffe <=0;end
            s1:begin
                if(i_seq==1)begin
                    current_state<=s2;
                    i_buffe <={i_buffe[3:0],i_seq};end
                 else begin
                    current_state<=s1;
                    i_buffe <={i_buffe[3:0],i_seq};
                 end
               end
             s2:begin
                if(i_seq==0)begin
                    current_state<=s3;
                    i_buffe <={i_buffe[3:0],i_seq};end
                 else begin
                    current_state<=s2;
                    i_buffe <={i_buffe[3:0],i_seq};
                 end
               end 
             s3:begin
                if(i_seq==0)begin
                    current_state<=s4;
                    i_buffe <={i_buffe[3:0],i_seq};end
                 else begin
                    current_state<=s2;
                    i_buffe <={i_buffe[3:0],i_seq};
                 end
               end 
             s4:begin
                if(i_seq==1)begin
                    current_state<=s5;
                    i_buffe <={i_buffe[3:0],i_seq};end
                 else begin
                    current_state<=s1;
                    i_buffe <={i_buffe[3:0],i_seq};
                 end
               end 
              s5:begin
                if(i_seq==1)begin
                    current_state<=s2;
                    i_buffe <={i_buffe[3:0],i_seq};end
                 else begin
                    current_state<=s3;
                    i_buffe <={i_buffe[3:0],i_seq};
                 end
               end 
               default:current_state<=idle;
        endcase
    
    end
end   

always @(negedge i_clk or negedge i_rst) begin
   if(i_rst==1'b1)
        out<=0;
   else if(i_buffe==5'b10011)
        out<=1'b1;
    else    
        out<=0;
end
endmodule

3、仿真测试

module sequential5_detector_tb;
reg i_clk;
reg i_rst;  
reg i_seq;  
wire out;

sequential5_detector sequential5_detector(
    .i_clk(i_clk),
	.i_rst(i_rst),
	.i_seq(i_seq),
	.out(out)
    );
always #20 i_clk = ~i_clk;
initial begin
    i_clk = 0;
    i_rst = 1;
    #60
    i_rst = 0;
    $stop;
    #40
    @(negedge i_clk) i_seq = 0;
    @(negedge i_clk) i_seq = 1;
    @(negedge i_clk) i_seq = 0;
    @(negedge i_clk) i_seq = 1;
    @(negedge i_clk) i_seq = 0;
    @(negedge i_clk) i_seq = 0;
    @(negedge i_clk) i_seq = 1;
    @(negedge i_clk) i_seq = 1;
    @(negedge i_clk) i_seq = 0;
    @(negedge i_clk) i_seq = 1;
    @(negedge i_clk) i_seq = 0;
    @(negedge i_clk) i_seq = 0;
    @(negedge i_clk) i_seq = 1;
    @(negedge i_clk) i_seq = 1;
    @(negedge i_clk) i_seq = 0;
    @(negedge i_clk) i_seq = 0;
    @(negedge i_clk) i_seq = 1;
    @(negedge i_clk) i_seq = 1;
end
endmodule

4、结果分析

 

当复位为0时,开始输入,当时钟上升沿到来时给输入,01010011时,最后是10011所以下一个时钟输出1。输入为010100110100110011,总共检测到三个10011,分别为01010011,输出1,01010011010011,输出1,010100110100110011输出1。 

 

标签:seq,clk,negedge,verilog,rst,设计,实验报告,reg,out
From: https://blog.csdn.net/mojixin123/article/details/139811168

相关文章

  • 模拟集成电路设计系列博客——7.2.3 每阶段k-bit流水线ADC
    7.2.3每阶段k-bit流水线ADC通过增加中间级增益和每级的比较器可以在每级解析多于1比特。信号流图类似之前介绍的每次迭代2比特的逐次逼近型ADC。一个通用的k比特级如下图所示:k比特副ADC的非线性可以通过增加额外的比较器通过数字方式来校正,类似于每级1.5比特架构[Lewis,1992]......
  • 【优化设计】基于泊松方程求解形状优化设计问题附Matlab代码
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • springboot小型超市商品展销系统-计算机毕业设计源码01635
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Springboot框架建......
  • SSM医院线上线下全诊疗系统-计算机毕业设计源码02210
    目 录摘要1绪论1.1背景及意义1.2研究现状1.3ssm框架介绍1.4论文结构与章节安排2 医院线上线下全诊疗系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能......
  • springboot防疫知识科普系统-计算机毕业设计源码03531
    摘 要如今计算机行业的发展极为快速,搭载于计算机软件运行的数据库管理系统在各行各业得到了广泛的运用,其在数据管理方面具有的准确性和高效性为大中小企业的日常运营提供了巨大的帮助。自从2020年新冠疫情爆发以来,防疫成了社会关注的重中之重,在防疫管理中,一开始对防疫的管......
  • SSM图书借阅管理系统-计算机毕业设计源码06780
    摘 要大数据时代下,数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为一种势不可挡的趋势。在图书馆的要求下,开发一款整体式结构的图书借阅管理系统,将复杂的系统进行拆分,能够实现对需求的变化快速响应、系统稳定性......
  • 【Java】如何设计RPC框架在10万QPS下实现毫秒级的服务调用?
    一、问题解析来思考这样一个场景:你的垂直电商系统的QPS已经达到了每秒2万次,在做了服务化拆分之后,由于我们把业务逻辑都拆分到了单独部署的服务中,那么假设你在完成一次完整的请求时需要调用4~5次服务,计算下来,RPC服务需要承载大概每秒10万次的请求。而你该如何设计RPC......
  • 基于FPGA的超声波(HC-SR04)测距系统设计---第一版
    欢迎各位朋友关注“郝旭帅电子设计团队”,本篇为各位朋友介绍基于FPGA的超声波(HC-SR04)测距系统设计---第一版 功能说明: 1.利用HC-SR04超声波模块进行测距。 2.在数码管上面显示测量出来的距离。 3.数码管显示精度为cm。  4.测量结果进行滑动均值处理(窗口长度为:4)......
  • Verilog Hdl 计数器分频
    “分频”:是累加多个输入时钟信号clk_in的周期,最终使得,输出时钟信号clk_out的周期变大,频率变小。一、偶数分频例:计数器要实现6分频,输入时钟信号clk_in的6个周期要变成1个周期输出,输出6分频的输出时钟信号clk_out的半个周期占3个输入时钟信号clk_in的周期,相当于clk_out每次在3......
  • 接口设计规范
    前言在实际工作中,我们需要经常跟第三方平台打交道,可能会对接第三方平台API接口,或者提供API接口给第三方平台调用。那么问题来了,如何设计一个优雅的API接口,能够满足:安全性、可重复调用、稳定性、好定位问题等多方面需求?今天跟大家一起聊聊设计API接口时,需要注意的一些地方,希......