mat7labs的个人空间 http://blog.eetop.cn/1631436 [收藏] [复制] [RSS]

日志

usb的verilog代码

热度 1已有 2392 次阅读2020-3-23 14:59 |系统分类:芯片设计

module USB  ( rst  ,
                  clk,
                             
                  fifo_wr ,
                  fifo_rd ,            
                  fifo_data,
                             
                  fifo_pf,
                  fifo_full,
                  fifo_empty,
                );
                
 input           rst     ;
 input           clk     ;
 input           fifo_pf,fifo_full,fifo_empty;
 
 output[7:0]     fifo_data ;
 output          fifo_wr   ;
 output          fifo_rd   ;
 
 
 //ports
 wire            rst       ;  
 wire            clk     ;  
                              
 reg [7:0]       fifo_data ;  
 reg             fifo_wr   ;  
 reg             fifo_rd   ;  
                              
 
 //internal signals
 reg             clkin;
 reg  [2:0]      STATE,NEXT;
 
 //parameters
 parameter     IDLE     = 3'D0,
               WRITE_1  = 3'D1,
               WRITE_2  = 3'D2;
               
 //Div clk by 2
 always @ (posedge clk or negedge rst)
 begin
   if(!rst)
      clkin <= 'b1;
   else
      clkin <= ~clkin;
 end 
 
 
 //state machine              
 always @ (STATE or rst)
 begin
     case(STATE)
     IDLE    :  NEXT = WRITE_1;
              
     WRITE_1 : if(!fifo_full)
                   NEXT = WRITE_1;
               else
                   NEXT = WRITE_2;
     WRITE_2 :     NEXT = WRITE_1;
     default : NEXT = IDLE ;
     endcase
 end
 
 //registe the state
 always @ (posedge clkin or negedge rst)
 if(!rst)
    STATE <= IDLE;
 else
    STATE <= NEXT;
 
 
 always @ (posedge clkin or negedge rst)
 if(!rst)
    begin
        fifo_data  <=8'hff;
        fifo_wr   <=1'b1;
        fifo_rd   <=1'b1;
    end
 else
    case(STATE)
    IDLE    : begin
                  fifo_rd     <= 1;
                  fifo_wr     <= 1;
              end
    WRITE_1 : begin
                  if(fifo_full)
                     fifo_data <= fifo_data + 1;
                  fifo_wr     <= 1'b0;
                  fifo_rd     <= 1'b1;
              end
    WRITE_2 : begin
                  fifo_wr  <= 1'b1;
                  fifo_rd  <= 1'b1;
              end
    endcase

  
endmodule           

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

关闭

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

小黑屋| 关于我们| 联系我们| 在线咨询 |  EETOP 创芯网 ( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2020-10-24 09:16 , Processed in 0.027251 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部