扫码加入

  • 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

序列检测器设计Verilog Quartus MINI FPGA开发板

1小时前
137
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-25112R24015914.docx

共1个文件

名称

序列检测器设计Verilog Quartus MINI FPGA开发板

软件

Quartus Prime

语言

Verilog

代码功能

序列检测器的设计

任务:检测某个长序列中是否包含特定的短序列,例如检测“11011000”中是否包含“101”,将检测结果“1”显示在数码管上;检测“11111000”中包含“111”的个数“3”显示在数码管上。

检测步骤

利用核心板上按码开关 SW1–SW8 作为长序列信号输入,设置好8位序列码。

KEY4 为序列检测开始和序列检测结束按键,按下 KEY4,LED4 点亮,开始准备输入并检测特定序列。

利用按键 KEY1~KEY3 输入特定的短序列,并采用 3 个 LED 来指示按键的状态,某个 KEY 按下后对应的 LED 灯会亮起,表示对应位为 1,再按一下会熄灭,表示对应位为 0。

再次按下 KEY4 按键,停止检测,LED4 熄灭,长序列串中出现特定短序列的次数显示在数码管上。

 

主要模块包括:display、key_jitter、sequence_det、sequence_top。设计聚焦关键功能的实现与时序约束,强调可综合性与可移植性,适合在Verilog环境下进行快速迭代与验证。

 

 

 

 

相关图片

演示视频:

设计文档:

代码实现思路

总体思路采用自顶向下的层次化设计,先明确接口与约束,再细化功能模块。时序方面以同步时钟为主,统一复位策略,关键路径通过流水线或并行分解降低延迟。控制部分使用有限状态机组织流程,数据路径依据接口协议进行缓冲与握手。验证阶段采用仿真与综合联合检查,覆盖边界条件与异常输入,确保在FPGA平台上稳定运行。核心模块:display、key_jitter、sequence_det、sequence_top,分别承担接口、控制与运算等职责。

代码结构

整体结构采用分层与模块化设计:顶层负责接口与时序组织,中间层拆分为控制与数据通道,底层为具体算法与外设驱动。通过统一的时钟与复位策略维持同步,关键路径引入流水线降低延迟。模块间通过明确的端口协议进行耦合与解耦,便于复用与扩展。主要子模块包括:display、key_jitter、sequence_det、sequence_top 等,各自承担接口适配、状态机控制、缓存与计算等职责,形成清晰可维护的架构。

部分代码

module display(                              input clk,//50M                              input [2:0] num_det,//数字                     output reg [5:0] cs,//数码管位选                     output reg [7:0] seg//数码管段选            );                  always @(posedge clk )//位选切换                              begin                              cs<=6'b111_110;                              end                  /////段选输出///////////////////////////////////////////                  always @(posedge clk)                  begin                              case (num_det)//数字显示码                        3'd0: seg<=~ 8'b1100_0000;//高电平点亮                              3'd1: seg<=~ 8'b1111_1001;                              3'd2: seg<=~ 8'b1010_0100;                              3'd3: seg<=~ 8'b1011_0000;                              3'd4: seg<=~ 8'b1001_1001;                              3'd5: seg<=~ 8'b1001_0010;                              3'd6: seg<=~ 8'b1000_0010;                              3'd7: seg<=~ 8'b1111_1000;                              default:;                              endcase                  end                  endmodule

代码文件(付费下载):

 

 

 

 

  • 2-25112R24015914.docx
    下载

相关推荐