集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1232|回复: 4

FPGA仿真,无波形,求助!!

[复制链接]
lihuailiang 发表于 2020-5-23 17:15:56 | 显示全部楼层 |阅读模式
1.代码
module FSM_Welcome(
        clk,
        rst_n,
        data,
        start,
        num
);

        input clk;
        input rst_n;
        input [7:0]data;
        input start;          //使能信号
       
        output reg [2:0]num;  //需要检测的序列出现的次数
       
        reg [3:0]state;
       
        localparam
                check_W = 4'd1,         //检测W
                check_e0 = 4'd2,       //检测第一个e
                check_l = 4'd3,         //检测l
                check_c = 4'd4,         //检测c
                check_o = 4'd5,         //检测o
                check_m = 4'd6,         //检测m
                check_e1 = 4'd7;       //检测第二个e
       
        always@(posedge clk or negedge rst_n)
        if(!rst_n)
                begin
                        state <= check_W;
                        num <= 3'd0;
                end
        else if(start)
                begin
                        case(state)
                                check_W:        begin
                                                if(data == "W")
                                                        state <= check_e0;
                                                else
                                                        state <= check_W;
                                        end
                                check_e0: begin
                                                if(data == "e")
                                                        state <= check_l;
                                                else if(state == "W")
                                                        state <= check_e0;
                                                else        
                                                        state <= check_W;
                                        end
                                check_l: begin
                                                if(data == "l")
                                                        state <= check_c;
                                                else if(state == "W")
                                                        state <= check_e0;
                                                else        
                                                        state <= check_W;
                                        end
                                check_c: begin
                                                if(data == "c")
                                                        state <= check_o;
                                                else if(state == "W")
                                                        state <= check_e0;
                                                else        
                                                        state <= check_W;
                                        end
                                check_o: begin
                                                if(data == "o")
                                                        state <= check_m;
                                                else if(state == "W")
                                                        state <= check_e0;
                                                else        
                                                        state <= check_W;
                                        end
                                check_m: begin
                                                if(data == "m")
                                                        state <= check_e1;
                                                else if(state == "W")
                                                        state <= check_e0;
                                                else        
                                                        state <= check_W;
                                        end
                                check_e1: begin
                                                if(data == "e")
                                                        begin
                                                                state <= check_W;
                                                                num <= num + 1'd1;
                                                        end
                                                else if(state == "W")
                                                        state <= check_e0;
                                                else        
                                                        state <= check_W;
                                        end
                                default: state <= check_W;
                        endcase
                end               

endmodule

2.测试文件
`timescale 1ns/1ns
`define clk_period 20

module FSM_Welcome_tb;

        reg clk;
        reg rst_n;
   wire [7:0]data;
        reg start;
       
        wire [2:0]num;
        //wire flag;
       
        wire [511:0]data_tmp;
        reg [511:0]data_reg;
        assign data_tmp = "abcdeWelcomehijkWelcomedcba";
       
        always@(posedge clk or negedge rst_n)
        if(!rst_n)
                data_reg <= 0;
        else if(start)
                data_reg <= data_reg << 8;
        else
                data_reg <= data_tmp;
               
        assign data = data_reg[511:504];
       
FSM_Welcome FSM_Welcome(.clk(clk),.rst_n(rst_n),.data(data),.start(start),.num(num));
       
        initial clk = 1;
        always#(`clk_period/2)clk = ~clk;
       
        initial begin
                rst_n = 0;
                start = 0;
                #(`clk_period*20)
                rst_n = 1;
                #(`clk_period*10)
                start = 1;
                #(`clk_period*64)
                #200;
                $stop;
        end

endmodule
3.无波形输出

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
竹林风234 发表于 2020-5-23 22:51:34 | 显示全部楼层
你那个状态机的跳转不对,有几个检测的是state
 楼主| lihuailiang 发表于 2020-5-27 19:12:22 | 显示全部楼层
我已研究成功。出仿真波形了!
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-4-19 18:32 , Processed in 0.072043 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表