VL28 输入序列不连续的序列检测

这篇具有很好参考价值的文章主要介绍了VL28 输入序列不连续的序列检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目来源:https://www.nowcoder.com/practice/f96d0e94ec604592b502b0f1800ed8aa?tpId=302&tags=&title=&difficulty=0&judgeStatus=0&rp=0&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3DVerilog%25E7%25AF%2587%26topicId%3D302
请编写一个序列检测模块,输入信号端口为data,表示数据有效的指示信号端口为data_valid。当data_valid信号为高时,表示此刻的输入信号data有效,参与序列检测;当data_valid为低时,data无效,抛弃该时刻的输入。当输入序列的有效信号满足0110时,拉高序列匹配信号match。

模块的时序图如下:
VL28 输入序列不连续的序列检测,fpga开发
代码实现:
module sequence_detect(
input clk,
input rst_n,
input data,
input data_valid,
output reg match
);
fsm
localparam IDLE = 3’d0,
S0 = 3’d1,
S1 = 3’d2,
S2 = 3’d3,
S3 = 3’d4;

reg [2:0] state, next_state;
always @(posedge clk or negedge rst_n) begin
if(!rst_n) state <= IDLE;
else state <= next_state;
end

always @(*) begin
case(state)
IDLE : next_state = data_valid ? (!data ? S0 : IDLE) : IDLE;
S0 : next_state = data_valid ? (data ? S1 : S0) : S0;
S1 : next_state = data_valid ? (data ? S2 : S0) : S1;
S2 : next_state = data_valid ? (!data ? S3 : S0) : S2;
S3 : next_state = data_valid ? (data ? S1 : S0) : IDLE;
default : next_state = IDLE;
endcase
end

//always @(*)
// match = state == S3;

always @(posedge clk or negedge rst_n) begin
if(!rst_n)
match <= 1’b0;
else
match <= next_state == S3;
end

/ shift_register //
reg [3:0] data_lock;
always @(posedge clk or negedge rst_n) begin
if(!rst_n) data_lock <= 4’d0;
else data_lock <= data_valid ? {data_lock[2:0], data} : data_lock;
end

always @(posedge clk or negedge rst_n) begin
if(!rst_n)
match <= 1’b0;
else
match <= {data_lock[2:0], data} == 4’b0110 & data_valid;
end

// always @(*) begin
// if(!rst_n)
// match = 1’b0;
// else
// match = data_lock == 4’b0110; //data_valid 无效后,不是一个clock
// end

endmodule文章来源地址https://www.toymoban.com/news/detail-824776.html

到了这里,关于VL28 输入序列不连续的序列检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【FPGA & Modsim】序列检测

    实验题目:    序列检测器设计                                   实验目的:    掌握应用数字逻辑设计集成开发环境进行序列检测器设计的方法;掌握时序逻辑电路设计的过程。                        实验内容: 1、设计一个序列检测器,用于

    2024年02月20日
    浏览(27)
  • fpga开发--蜂鸣器发出连续不同的音调

    使用fpga蜂鸣器连续发出do,re,mi,fa,so,la,xi七个不同的音调,每个音调的持续时间为0.5s。 采用状态机实现音调的转化,当do状态持续了0.5s之后转移到re状态,以此类推...采用0.5s的时间flag信号控制状态机的转变。因为不同的音调有不同的频率,所以在每个时钟周期内需要

    2024年02月15日
    浏览(37)
  • “01110”双输入口序列检测器的Verilog设计

    设计一个序列检测功能的时序电路,如图所示。其输入信号有clr、clk、A、 B,输出信号Z。其中clk为时钟信号, clr是低电平有效的异步复位信号,A、B是输入数据信号。有一个二进制串行数据D0D1D2D3……Dx,以两位为一组顺序送入电路,D0送入A,D1送到B,以此类推。电路检测此

    2024年02月12日
    浏览(40)
  • 【 FPGA 】序列检测器 11010 (mealy状态机,moore状态机)

            状态机是硬件电路设计的常用的描述工具,也是电路设计的重要思想。很早之前我就知道mealy状态机和moore状态机,但是对两者的差别不是非常的清楚,最近在学习系列检测器的设计时对这两种状态机和一段式、三段式状态机有了更深刻的了解,在这里分享自己的见解

    2024年02月05日
    浏览(40)
  • 【数字IC手撕代码】Verilog模三检测器(判断输入序列能否被三整除)|题目|原理|设计|仿真

    芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区 联合力荐 !近500篇 数字IC精品文章收录 ! 【数字IC精品文章收录】学习路线·基础知识·总线·脚本语言·芯片求职·EDA工具·低功耗设计Verilog·STA·设计·验证·FPGA·架构·AMBA·书籍 本系列旨在提

    2024年02月16日
    浏览(38)
  • C/C++|物联网开发入门+项目实战|函数输入与输出|值传递|地址传递|连续空间的传递|嵌入式C语言高级|C语言函数的使用-学习笔记(11)

    参考: 麦子学院-嵌入式C语言高级-C语言函数的使用 一堆代码的集合,用一个标签去描述它 复用化,降低冗余度 标签 ------ 函数名 函数和数组都属于内存空间,函数具备3要素: int *p; int a[100]; 1、函数名(地址) 2、输入参数 3、返回值 在定义函数时,必须将3要素告知编译器

    2023年04月20日
    浏览(52)
  • 【Verilog实现8个输入1个输出的选择器】--FPGA开发

    【Verilog实现8个输入1个输出的选择器】–FPGA开发 在FPGA开发中,选择器是一种重要的电路,它可以将多个输入端口上的数据选择一个输出端口进行传输。通过Verilog语言实现选择器,我们可以灵活地根据实际需求来配置输入和输出端口,提高FPGA的功能和性能。 下面,我们将讨

    2024年02月07日
    浏览(42)
  • leetcode300. 最长递增子序列 子序列(不连续)

    https://leetcode.cn/problems/longest-increasing-subsequence/ 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 LIS即最长上升子序列,指

    2024年02月14日
    浏览(42)
  • vivado序列检测器verilog代码ego1开发板验证

    名称:vivado序列检测器verilog代码ego1开发板验证 软件:VIVADO 语言:Verilog 代码功能: 设计一个111序列检测器。 要求:当检测到3个或3个以上的1时,输出为1,其他输入情况输出为0. 画出状态转移图,完成 Verilog描述。 本代码已在ego1开发板验证,开发板如下,其他开发板可以修改管

    2024年02月03日
    浏览(55)
  • 【Leetcode】128.最长连续序列

    给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例1: 示例2: 提示 : 0 = nums.length = 10 5 -10 9 = nums[i] = 10 9

    2024年02月10日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包