設計網站的素材谷歌賬號注冊
專欄前言
本專欄的內容主要是記錄本人學習Verilog過程中的一些知識點,刷題網站用的是??途W
串并轉換操作是非常靈活的操作,核心思想就是移位。串轉并就是把1位的輸入放到N位reg的最低位,然后N位reg左移一位,在把1位輸入放到左移后的reg的最低位,這樣循環(huán),就可以得到,以最高位開始傳輸,最低位傳輸完成的N位數據了,最后將這N位數據同時輸出,即為串行輸入并行輸出;并轉串就是把并行的N位數據的最高位給1位輸出,然后類似的循環(huán)左移就可以了。
`timescale 1ns/1ns
module huawei5(input wire clk ,input wire rst ,input wire [3:0]d ,output wire valid_in ,output wire dout);//*************code***********//reg [3:0] data ; reg [1:0] cnt ; reg valid ; always @ (posedge clk or negedge rst) begin if (!rst) begin data <= 0 ; cnt <= 0 ; valid <= 0 ; endelse begin if (cnt == 3) begin data <= d ; // 并行輸入cnt <= 0 ; valid <= 1 ; endelse begin cnt <= cnt + 1 ; valid <= 0 ; data <= {data[2:0], data[3]} ; // 每個時鐘將數據左移,保證每位數據都能出現在最高位endendendassign dout = data[3] ; // 每個時鐘上升沿讀取當前數據的最高位,四個時鐘讀完assign valid_in = valid ; //*************code***********//endmodule