📄 data_receive.v
字号:
module data_receive( //input clk, rst_n, Tdata, Tsop, Teop, //output Tdata_out, fifo_trans_wrreq, bytes_data_num );//=========================================================////============ I/O direction =============================////=========================================================//input clk;input rst_n;input [7:0] Tdata;input Tsop;input Teop;output[7:0] Tdata_out;output fifo_trans_wrreq;output[10:0] bytes_data_num; //=========================================================////================= I/O Type =============================////=========================================================//reg [7:0] Tdata_out;reg fifo_trans_wrreq;reg [10:0] bytes_data_num; //=========================================================////============ Internal Signals ==========================////=========================================================//reg [10:0] bytes_data_cnt;reg flag_cnt;reg trans_data_end;//==========================================================////==================== Process ============================////==========================================================////the number of trans data,actually is num-1always @(posedge clk or negedge rst_n) begin if(!rst_n) begin bytes_data_cnt<=11'd0; flag_cnt<=1'b0; end else begin if(Tsop) begin bytes_data_cnt<=11'd0; flag_cnt<=1'b1; end else begin if(flag_cnt) begin bytes_data_cnt<=bytes_data_cnt+11'd1; flag_cnt<=flag_cnt; end else if(Teop) begin bytes_data_cnt<=bytes_data_cnt; flag_cnt<=1'd0; end else begin bytes_data_cnt<=bytes_data_cnt; flag_cnt<=flag_cnt; end end endend//fifo_trans_wrreqalways @(posedge clk or negedge rst_n) begin if(!rst_n) fifo_trans_wrreq <= 1'b0; else begin if(Tsop) fifo_trans_wrreq <= 1'b1; else if(trans_data_end) fifo_trans_wrreq <= 1'b0; else fifo_trans_wrreq <= fifo_trans_wrreq; endend//bytes_data_numalways @(posedge clk or negedge rst_n) begin if(!rst_n) bytes_data_num <= 11'd0; else begin if(fifo_trans_wrreq) bytes_data_num <= bytes_data_cnt; else bytes_data_num <= bytes_data_num; endend//all trans data always @(posedge clk or negedge rst_n) begin if(!rst_n) trans_data_end <= 1'b0; else begin if(Tsop) trans_data_end <= 1'b0; else if(Teop) trans_data_end <= 1'b1; else trans_data_end <= trans_data_end; endend//Tdata_outalways @(posedge clk or negedge rst_n) begin if(!rst_n) Tdata_out <= 8'd0; else Tdata_out <= Tdata;endendmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -