verilog 我想将串口输入的数据变为8为数据 不知道怎样编程呢

来源:百度知道 编辑:UC知道 时间:2024/06/04 04:47:50
module hh(clr,clk,clk1,din,fifo,out);
input clr,clk,clk1,din;

output [4:0]fifo;
output [4:0]out;
reg [4:0]out;
reg [4:0] fifo;

always @(posedge clk) begin
if(!clr)
fifo<=0;
else
fifo<={fifo[4:0],din};
end

always @(posedge clk1) begin
out <= fifo;
end

endmodule

我试过了 这样最多只能组合成五位数据,8位数据结果将会输出0
不知道为什么,那位高手指点一下

module hh(clr,clk,clk1,din,fifo,out);
input clr,clk,clk1,din;

output [7:0]fifo; //你需要8位输出,肯定得是一个byte么,一下同理修改
output [7:0]out;
reg [7:0]out;
reg [7:0] fifo;

always @(posedge clk) begin
if(!clr)
fifo<=0;
else
fifo<={fifo[6:0],din}; //相当于,一个时钟,会有一个bit的数据
//移位进来(shift left),
end

always @(posedge clk1) begin
out <= fifo;
end

endmodule

我没有改你其他的部分,什么时候数据shift完后,可以输出了,也就是clk1,这个你自己设计好就行了
谢谢

reg [4:0]out;
你5个寄存器怎么存8位,该成reg [7:0]out;