FIFO подключен к мультиплексору - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь сделать петлю из fifo и mux.FIFO подключен ко входу 2 мультиплексора, в то время как выход мультиплексора зациклен на входе 1. Всякий раз, когда есть выбор для мультиплексирования, он принимает вход от fifo и переводит его в мультиплексор, но когда вход выбора равен нулю, мультиплексор просто зацикливает еговывод на вход 1. Как только FIFO заполнен, он больше не требует ввода.Запрос на запись становится равным нулю.Сигнал выбора становится высоким, поэтому данные из fifo поступают на выход мультиплексора.

FIFO, MUX - это импортированные IP-ядра от ALTERA, поэтому они идеальны.ширина ввода и вывода данных составляет 44 бита.FIFO имеет ширину 44 бита и глубину 16 бит.

Вот мой код verilog, его тестовый стенд и симуляция, но как только я даю SELECT вход для моего мультиплексора, он просто читает один вход из моего fifo.где остальные данные моего fifo.Любая помощь, пожалуйста ... !!!

module dataintest(
input clock,
input [43:0] in_word_packet,
//input RDReq,
//input WRReq,
input reset,
output EMPty,
output FULl,
output [43:0] out_word_packet,
input SEL
);

wire [43:0] fifo_mux;

reg read;
reg write;

always @ (posedge clock)
    begin
        if(reset)
            begin
                read<=0;
                write<=0;
            end
        else if(FULl)
            begin
                write<=0;
                //read<=1;
            end
        else if(SEL) //at the start fifo is empty so at every posedge of clock if doesnt allow fifo to read anything and goes forever
            begin
                read<=1;
            end
        else
            begin
            //  read<=1;
                write<=1;
            end
    end

    FIFOIP u0(
    .clock(clock),
    .data(in_word_packet),
    .rdreq(read),
    .sclr(reset),
    .wrreq(write),
    .empty(EMPty),
    .full(FULl),
    .q(fifo_mux));

    MUXIP u1(
    .data0x(out_word_packet),
    .data1x(fifo_mux),
    .sel(SEL),
    .result(out_word_packet));

endmodule

тестовый стенд, который я написал:

`timescale 1ns / 1ns
module dataintesttb2  ; 

  reg    SEL   ; 
  reg    clock   ; 
  reg  [43:0]  in_word_packet   ; 
  wire  [43:0]  out_word_packet   ; 
  wire    FULl   ; 
  wire    EMPty   ; 
  reg    reset   ; 
  dataintest  
   DUT  ( 
       .SEL (SEL ) ,
      .clock (clock ) ,
      .in_word_packet (in_word_packet ) ,
      .out_word_packet (out_word_packet ) ,
      .FULl (FULl ) ,
      .EMPty (EMPty ) ,
      .reset (reset ) ); 


 initial
  begin
        SEL=1'b0;
        clock  = 1'b0  ;
        reset =1'b1;
        #10 reset =1'b0;
        //#10 SEL=1'b1;
      #200 SEL=1'b1;
      //#1600 SEL=1'b1;
    end

    always
        begin
            #5 clock = ~clock;
        end

    always
        begin
            #10 in_word_packet=in_word_packet+1;
        end

  initial
        begin
            in_word_packet=0;
        end


  initial
    #2000 $stop;
endmodule

Это результаты моделирования. введите описание изображения здесь

...