关于cpld和cpu的通讯问题
绝对的初学者。我想实现这样一个功能:cpu给cpld发四个地址,cpld接收到地址后根据不同地址给数据总线赋不同的值,把值送给cpu。
我完全是按书上语法来写的,查错编译综合也都通过了,但下到cpld里就是传不了数,用仿真器在cpu里读不到数。
对应的引脚都连好了,UCF的定义也没问题。哪位好心的高手能指导我一下。。。
如果有好的学习方法也欢迎指导。。。我以前接触的硬件主要是画原理图和PCB图或者做手工焊板子。。。
现在学fpga,除了看书,就是照着例子写代码,下到芯片里实验。但写好的代码实现不了功能,我很迷茫。。。
十分感谢路过的各位!
`define SctrByte0 8'h00//定义地址
`define SctrByte1 8'h01
`define SctrByte2 8'h02
`define SctrByte3 8'h03
module transmit(DataBus,AddressBus,WE,OE,CS1,inclk);
input AddressBus;//地址总线
input WE; //cpu写使能
input OE; //cpu读使能
input CS1;
input inclk; //cpld时钟
inout DataBus; //数据总线
reg pre_rd;
reg DataReg = 8'b00000000;
reg AddressReg;
assign DataBus = DataReg;
always @(posedge inclk)
begin
if (CS1 == 0 && WE == 0)
begin
AddressReg <= AddressBus; //cpu向cpld写地址
end
end
always @(posedge inclk)
begin
if (OE == 0)
begin
pre_rd <= 1;
end
else
begin
pre_rd <= 0;
end
end
always @(posedge inclk)
begin
if (pre_rd)
begin
case(AddressReg) //根据不同地址赋值
`SctrByte0:
begin
DataReg <= 8'b00000011;
end
`SctrByte1:
begin
DataReg <= 8'b00001100;
end
`SctrByte2:
begin
DataReg <= 8'b00110000;
end
`SctrByte3:
begin
DataReg <= 8'b11000000;
end
endcase
end
else
begin
DataReg <= 8'bzzzzzzzz;
end
end
endmodule 谁告诉你Reg可以赋值'bz?你自己发明的吧。或者就是你的书是你写的。还有可能是你看的是讲的仿真的。给一个端口赋值的方法是assign Port = (PortEN)? RegData : 'bz; 你的CPU和CPLD的通信方式是什么?不理解 用的什么板子,管脚约束可别错
页:
[1]