目錄
1.課題概述
2.系統測試效果
3.核心程序與模型
4.系統原理簡介
5.完整工程文件
1.課題概述
? ? ? ?本課題采用基于偽碼匹配相關峰檢測的方式實現基于FPGA的特定序列檢測器verilog實現,包含testbench和開發板硬件測試。
2.系統測試效果
仿真測試
? ? ? ?當檢測到序列的時候,峰值變量opeak會輸出一個峰值,然后flag產生一個高電平,表示檢測到序列。
硬件調試
當檢測到序列,則LED1燈點亮。
在實際測試過程中,如果你的開發板和我的不一樣,可以參考本博客置頂文章進行硬件配置修改:
FPGA系統開發板調試過程不同芯片的移植步驟介紹-CSDN博客
通過這個鏈接的步驟,可以實現不同開發板上的系統調試。
3.核心程序與模型
版本:vivado2022.2
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2025/04/04 14:08:45
// Design Name:
// Module Name: tops
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module tops(
input i_clk,
input i_rst,
output signed[1:0]o_seq,
output signed[9:0]o_peak,
output o_search_flag
);signaler signaleru(.i_clk (i_clk), .i_rst (i_rst), .o_bits (o_seq)
);parameter SAMP = 1;
//設置需要檢測的樣本
//parameter meq = 128'b01100111_11010011_01111110_11010100_00011101_11001100_10100111_00000100_11000011_10001011_01001111_01011101_10111010_10011011_10010011_11000011;
parameter meq = {64'b01100111_11010011_01111110_11010100_00011101_11001100_10100111_00000100,64'd0};
parameter lvl = 60;seq_search #(SAMP,meq,lvl)
seq_search_u(.i_clk (i_clk), .i_rst (i_rst), .i_X (o_seq), .o_peak (o_peak),.o_search_flag(o_search_flag));endmodule
00X6_001m
4.系統原理簡介
? ? ? ?特定序列檢測器旨在從輸入的信號流里識別出特定的二進制序列。在采用偽碼匹配并依據相關峰來檢測序列時,其核心原理為:把輸入信號和本地存儲的特定偽碼序列進行相關運算,當輸入信號包含特定序列時,相關運算的結果會呈現出一個明顯的峰值,也就是相關峰。通過對這個相關峰進行檢測,就能判斷輸入信號中是否存在特定序列。
? ? ? ?設輸入信號序列為?x(n),本地偽碼序列為?c(n),其中?n=0,1,?,N?1,N?為序列長度。相關運算的公式如下:
? ? ? ?然后通過預先設定的一個閾值?T,當相關運算結果?R(k)?大于這個閾值時,就認為檢測到了相關峰。閾值的設定需要依據實際情況進行調整,要綜合考慮噪聲水平、序列特性等因素。
FPGA的實現過程如下:
1.數據輸入模塊:負責接收輸入信號。
2.偽碼生成模塊:產生本地的特定偽碼序列。
3.相關運算模塊:對輸入信號和本地偽碼序列進行相關運算。
4.峰值檢測模塊:檢測相關運算結果中的峰值。
? ? ? 4.1 根據系統的噪聲水平和序列特性,確定一個合適的閾值T。
? ? ? 4.2 對每個相關運算結果R(k)進行檢查,判斷其是否大于閾值T。
? ? ? 4.3 若R(k)>T,則判定檢測到相關峰,輸出檢測信號。
5.輸出模塊:依據峰值檢測結果輸出檢測信號。
5.完整工程文件
v