|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
/*
这种情况应该怎么写:
一个总线发送数据的block,共40 bits,
S T cmd addr crc STOP
S:起始位,1bit,固定为0
T:标志位,1bit,固定为1
CRC:crc值,为前面数据的crc值,7位,
stop:停止位,固定为 1
我的写法如下,但是这样效率似乎不高?会产生一个64选一的mux,一个
最高到40的incr +1的器件。
不知道有没有别的好的方法实现?
先谢谢各位了。:P
*/
module test_reg (clk,wr,cmd,addr,crc,dout,done);
input clk;
input wr; //使能信号
input [5:0] cmd; //命令字
input [23:0] addr; //32bits 参数
input [6:0] crc; //7bits crc值
output dout;//输出数据
output done;//传输结束标志
reg dout;
reg done;
wire [39:0] cmdreg;
reg [3:0] i;
assign cmdreg = {1'b0,1'b1,cmd,addr,crc,1'b1};
always @(posedge clk )
if (!done && wr)
begin
if (i< 39)
begin
dout <= cmdreg;
i <= i + 1'b1 ;
end
else begin
i <= 1'bx;
done <= 1'b1;
end
end
else if (!wr)
begin
done <= 1'bx;
i <= 1'b0;
end
endmodule |
|