生活随笔
收集整理的這篇文章主要介紹了
数据串转并电路
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
數(shù)據(jù)串轉并電路
題目描述
實現(xiàn)串并轉換電路,輸入端輸入單bit數(shù)據(jù),每當本模塊接收到6個輸入數(shù)據(jù)后,輸出端輸出拼接后的6bit數(shù)據(jù)。本模塊輸入端與上游的采用valid-ready雙向握手機制,輸出端與下游采用valid-only握手機制。數(shù)據(jù)拼接時先接收到的數(shù)據(jù)放到data_b的低位。
電路的接口如下圖所示。valid_a用來指示數(shù)據(jù)輸入data_a的有效性,valid_b用來指示數(shù)據(jù)輸出data_b的有效性;ready_a用來指示本模塊是否準備好接收上游數(shù)據(jù),本模塊中一直拉高;clk是時鐘信號;rst_n是異步復位信號
`timescale 1ns/1nsmodule s_to_p(input clk , input rst_n ,input valid_a ,input data_a ,output reg ready_a ,output reg valid_b ,output reg [5:0] data_b
);reg [2:0] cnt;always@(posedge clk or negedge rst_n)beginif(!rst_n)cnt <= 3'b0;else if( cnt == 3'd5 )cnt <= 3'b0;else if(valid_a == 1'b1)cnt <= cnt + 1'b1;elsecnt <= cnt;endreg [5:0] data;always@(*)begincase(cnt)3'd0:data[0] = data_a;3'd1:data[1] = data_a;3'd2:data[2] = data_a;3'd3:data[3] = data_a;3'd4:data[4] = data_a;3'd5:data[5] = data_a;default:data = 6'b0;endcaseendalways@(posedge clk or negedge rst_n)beginif(!rst_n)valid_b <= 1'b0;else if(cnt == 3'd5)valid_b <= 1'b1;elsevalid_b <= 1'b0;endalways@(posedge clk or negedge rst_n)beginif(!rst_n)data_b <= 6'b0;else if(cnt == 3'd5 )data_b <= data;elsedata_b <= data_b;endalways@(posedge clk or negedge rst_n)beginif(!rst_n)ready_a <= 1'b0;elseready_a <= 1'b1;end
endmodule
知識點
握手機制:
總結
以上是生活随笔為你收集整理的数据串转并电路的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。