/*
任务:根据上一级接收的命令和数据,若接收到的命令
是0x10、0x11、0x12,分别‘写’电源、控制、
使能字,若接收到的命令是0x20、0x21、0x22、
0x23、0x2F,分别‘读’电源、控制、使能字、
外部状态,版本号
问题:单独‘写’电源、控制、使能字时,输出正常,
但是‘读’电源、控制、使能字时,电源、控
制、使能字就发生了改变,并且读取到的字也
随之改变。
例如,发送 rxcmd_reg=0x10,rxdata_reg=0x55 时,
power的输出确实是0x55,但是发送rxcmd_reg=0x20,
rxdata_reg=0x00 时,power变成0,txdata_reg输出
也变成0。
源码的部分如下,请求大神帮助!!!
跪谢!!!!!
**/
module usart_test(rxcmd_reg,rxdata_reg,status,power,control,enable,txcmd_reg,txdata_reg);
input[7:0] rxcmd_reg;//串口接收到的命令
input[7:0] rxdata_reg;//串口接收到的命数据
input[7:0] status;//连接外部状态
output[7:0] power;//电源字
output[7:0] control;//控制字
output[7:0] enable;//使能字
output[7:0] txcmd_reg;//发送命令
output[7:0] txdata_reg;//发送数据
reg[7:0] power;//电源字
reg[7:0] control;//控制字
reg[7:0] enable;//使能字
reg[7:0] txdata_reg;//发送数据
assigne txcmd_reg=rxcmd_reg;//发送命令 = 接收命令
always@(rxcmd_reg)begin
case(rxcmd_reg)
8'h10:power<=rxdata_reg;//写电源字
8'h11:control<=rxdata_reg;//写控制字
8'h12:enable<=rxdata_reg;//写使能字
8'h20:txdata_reg<=power;//读电源字
8'h21:txdata_reg<=control;//读控制字
8'h22:txdata_reg<=enable;//读使能字
8'h23:txdata_reg<=status;//读外部状态
8'h2F:txdata_reg<=8'h20;//读版本号
default:txdata_reg<=8'hE0;//错误命令
endcase
end
endmodule
一周热门 更多>