题解 | #整数倍数据位宽转换8to16#
整数倍数据位宽转换8to16
https://www.nowcoder.com/practice/f1fb03cb0baf46ada2969806114bce5e
`timescale 1ns/1ns
module width_8to16(
input clk ,
input rst_n ,
input valid_in ,
input [7:0] data_in ,
output reg valid_out,
output reg [15:0] data_out
);
//data_cnt
reg data_cnt;
always@(posedge clk or negedge rst_n) begin
if(!rst_n) data_cnt <= 0;
else if(valid_in)
data_cnt <= data_cnt+1;
//else data_cnt <= (valid_in && data_cnt==2'd2)? 0 : data_cnt+1;
end
//data_out
always@(posedge clk or negedge rst_n) begin
if(!rst_n) data_out <= 0;
else if(valid_in && (data_cnt==2'd1))
data_out <= {data_lock,data_in};
end
//data_lock
reg [7:0] data_lock;
always@(posedge clk or negedge rst_n) begin
if(!rst_n) data_lock <= 0;
else if(valid_in) data_lock <= data_in;
end
//valid_out
always@(posedge clk or negedge rst_n) begin
if(!rst_n) valid_out <= 0;
else valid_out <= (valid_in && (data_cnt==2'd1));
end
endmodule
easy,照本宣科
查看21道真题和解析