zoukankan      html  css  js  c++  java
  • 写简单的tb(testbench)文件来测试之前的FSM控制的LED

    先上我之前写的状态机控制的led代码led_test.v

       module led_test(clk,led_out);
        input clk;
        output reg[3:0] led_out;
        
        initial
        begin
            led_out=4'b0000;
        end
        
        reg[3:0] state=4'b0000;
        reg[31:0] timer=32'd0;
        
        parameter state_0=4'b0000;
        parameter state_1=4'b0001;
        parameter state_2=4'b0010;
        parameter state_3=4'b0100;
        parameter state_4=4'b1000;
        
        always@(posedge clk)
        begin
            
          case(state)
          
           state_0:
            if(timer>=32'd9999_9999)
               begin
                  state<=state_1;
                   led_out<=state_1;
                   timer<=32'd0;
               end
            else
               begin
                      state<=state;
                      led_out<=led_out;
                      timer=timer+32'd1;
               end
               
               
               state_1:
            if(timer>=32'd9999_9999)
               begin
                  state<=state_2;
                   led_out<=state_2;
                   timer<=32'd0;
               end
            else
               begin
                      state<=state;
                      led_out<=led_out;
                      timer=timer+32'd1;
               end
               
            state_2:
            if(timer>=32'd9999_9999)
               begin
                  state<=state_3;
                   led_out<=state_3;
                   timer<=32'd0;
               end
            else
               begin
                      state<=state;
                      led_out<=led_out;
                      timer=timer+32'd1;
               end
        
        state_3:
            if(timer>=32'd9999_9999)
               begin
                  state<=state_4;
                   led_out<=state_4;
                   timer<=32'd0;
               end
            else
               begin
                      state<=state;
                      led_out<=led_out;
                      timer=timer+32'd1;
               end
               
               
                state_3:
            if(timer>=32'd9999_9999)
               begin
                  state<=state_4;
                   led_out<=state_4;
                   timer<=32'd0;
               end
            else
               begin
                      state<=state;
                      led_out<=led_out;
                      timer=timer+32'd1;
               end
        
        state_4:
            if(timer>=32'd9999_9999)
               begin
                  state<=state_0;
                   led_out<=state_0;
                   timer<=32'd0;
               end
            else
               begin
                      state<=state;
                      led_out<=led_out;
                      timer=timer+32'd1;
               end
               
               default:
               state<=state_0;
        
        
          endcase
        end
        
        
    endmodule
        
        

    然后下面是我写的一个简陋的tb文件 led_test_tb.v

    `timescale 1ns/1ps
    module  led_test_tb();
       reg clk;
       wire[3:0] led_out;
       led_test a (
          .clk(clk),
          .led_out(led_out)
       );
       
       initial
        begin
          clk=0; 
       end
     
       initial
       begin
            clk=0;
            forever
             #10 clk=~clk;
       end
       
    endmodule

     但是今天折腾了半天仍然没有输出正确的波形图,只有激励波形,改天接着修改。下面是初次调出的波形图:

    马上要考信号与系统了,我还得滚去复习,还要复习考研,抽空学这个,虽然累,但是乐啊,剩下的仿真波形错误我下次再来改吧。

  • 相关阅读:
    详解Winform多线程编程基本原理
    asp.net 文件夹和文件的创建、删除
    sql server 查询表名,存储过程,列名等
    随机输出数组中的一个数
    C# 获取Access数据库中所有表名及其列名、列类型
    Oracle 数据库小记
    Oracle11g、PLSQL、Winfrom环境搭建
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    Android开发中用到的框架、库介绍
    Android数据存储
  • 原文地址:https://www.cnblogs.com/jeavenwong/p/6782716.html
Copyright © 2011-2022 走看看