基于FPGA的序列检测器仿真

该博客介绍了使用VHDL设计的一个测试平台,包括顶层模块`xulie_top_vlg_tst`,它包含了时钟信号、复位信号以及数据输入。平台实例化了`xulie_topi1`模块,并提供了50MHz的时钟信号。博客还提到了序列发生器`m_seqm_seq_1`和序列检测模块`xuliexulie_1`,用于测试和验证特定序列。此外,还有一个结果显示模块`segseg_1`来展示检测结果。
摘要由CSDN通过智能技术生成

链接:https://pan.baidu.com/s/15r4xA4aXTU9agQGDHT43xg
提取码:1234


//synopsys translate_off
`timescale 10 ns/ 1 ps
//synopsys translate_on
module xulie_top_vlg_tst();
// constants                                           
// general purpose registers

// test vector input registers

reg         clk;
reg         reset_n;
reg [7:0]   xulie_data;
// wires                                               
wire [3:0] AB;
wire [7:0] duan;
wire [3:0] wei;


// assign statements (if any)    
例化顶层模块                        
xulie_top i1 (
// port map - connection between master ports and signals/registers   

	.clk        (clk),
	.reset_n    (reset_n),
    .AB         (AB),
	.wei        (wei),
    .duan       (duan),
	.xulie_data (xulie_data)
);
initial                                                
begin                                                  
// code that executes only once                        
// insert code here --> begin  
    //初始化设置信号
    clk <= 1'b0;
    reset_n <= 1'b0;
    xulie_data <= 8'b11100101;//设置要检测出的序列值
// --> end                                             
$display("Running testbench");                       
end                                                    
always                                                 
// optional sensitivity list                           
// @(event1 or event2 or .... eventn)                  
begin                                                  
// code executes for every event on sensitivity list   
// insert code here --> begin                          
    #1 clk <= ~clk;//50M时钟信号
    reset_n <= 1'b1;
// --> end                                             
end                                                    
endmodule
/*----------------------------文件信息--------------------------
** 文件名称: 	xulie_top.v
** 创建日期:	 
** 功能描述:	 
**---------------------------修改文件的相关信息----------------
** 修改人: 	
** 修改日期:	
** 修改内容:
*******************************************************************************/
//synopsys translate_off
`timescale 10 ns/ 1 ps
//synopsys translate_on
module xulie_top(
    clk,            
	reset_n,
    duan,           
    wei,            
    // CLR,
    xulie_data,
    AB
	);
	
	input           clk;    // 系统时钟 50MHz
	input 			reset_n;  // 复位信号 低电平有效
	// input 			CLR;    //  
	input [7:0]     xulie_data;// 												// 数码管段选
	output [3:0]    AB;     // 												// 数码管段选
	output [7:0]    duan;   // 												// 数码管段选
	output [2:0]    wei;    // 

    
    wire[3:0]       counter1;//  
	wire[3:0]       counter2;//  
	wire[3:0]       counter3;//
    wire            Din;
    
    //序列发生器模块--用于测试
    m_seq   m_seq_1(
        .clk        (clk),            
        .reset_n    (reset_n),
        .m_se       (Din)
	);
    
    //序列检测模块
    xulie   xulie_1(
        .clk        (clk),            
        .reset_n    (reset_n),
        .Din        (Din),
        // .CLR        (CLR),
        .xulie_data (xulie_data),
        .counter1   (counter1),
        .counter2   (counter2),
        .counter3   (counter3),
        .AB         (AB)
	);
    
    //序列检测结果显示模块
    seg seg_1(
        .clk        (clk),            
        .reset_n    (reset_n),
        .duan       (duan),           
        .wei        (wei),            
        .counter1   (counter1),
        .counter2   (counter2),
        .counter3   (counter3)
	);
endmodule
   
      
       
      
    
/*----------------------------文件信息--------------------------
** 文件名称: 	m_seq.v
** 创建日期:	 
** 功能描述:	 
**---------------------------修改文件的相关信息----------------
** 修改人: 	
** 修改日期:	
** 修改内容:
*******************************************************************************/
//synopsys translate_off
`timescale 10 ns/ 1 ps
//synopsys translate_on



module m_seq(
    clk,            
	reset_n,
    m_se
	);
	
	input           clk;// 系统时钟 50MHz
	input 			reset_n;// 复位信号 低电平有效
	output          m_se;//M序列生成输出										
	//------------------------------------------------------------------
			
	//------------------------------------------------------------------
	reg             m_se;
    reg[7:0]        temp;													
	
	always @(posedge clk or negedge reset_n)
    begin
        if(reset_n == 1'b0)
        begin
            temp <= 8'b11100101;
        end
        else
        begin
            m_se <= temp[7];
            temp[7] <= temp[6];
            temp[6] <= temp[5];
            temp[5] <= temp[4];
            temp[4] <= temp[3];
            temp[3] <= temp[2];
            temp[2] <= temp[1];
            temp[1] <= temp[7];
        end
    end
endmodule
   
      

.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值