|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
我想实现的功能是,arm给cpld发地址,cpld根据不同的地址向8位数据总线发数,把数传给arm
以下是我写的cpld的程序。语法检查编译啥的都通过,ucf里端口定义也没问题,但下到cpld里,arm那边就是读不到数。不知道问题出在哪里?
我是彻底的初学者。。。完全都按书上例子来做的。
`define SctrByte0 8'h00 //定义地址,arm那边发的地址是0x81000000~0x81000003
`define SctrByte1 8'h01
`define SctrByte2 8'h02
`define SctrByte3 8'h03
module transmit(DataBus,AddressBus,WE,OE,CS1); //WE是arm写,OE是arm读
input [7:0] AddressBus; //地址总线和数据总线在电路板上都是跟arm的对应端口相连的
input WE;
input OE;
input CS1;
inout [7:0] DataBus;
reg [7:0] DataReg;
reg [7:0] AddressReg;
initial
begin
DataReg = 8'h00;
end
always @(negedge WE) //当arm写使能信号有效时
begin
if (CS1 == 1'b0) //片选CS1低电平有效
begin
AddressReg = AddressBus; //从arm读地址
end
if (AddressReg == `SctrByte0)
begin
DataReg = 8'b00000011;
end
else if (AddressReg == `SctrByte1)
begin
DataReg = 8'b00001100;
end
else if (AddressReg == `SctrByte2)
begin
DataReg = 8'b00110000;
end
else if (AddressReg == `SctrByte3)
begin
DataReg = 8'b11000000;
end
end
assign DataBus = (OE == 1'b0)?DataReg:8'bz; //当arm读信号有效时,将reg值送数据总线
endmodule
ps:我用仿真器在keil Uvision里看arm没读到数,那么可以用什么手段来查看cpld有没有接收到arm传来的地址,以及cpld的引脚端口有没有输出呢?
如果有人能帮我解决这个问题,我会连续一周吃斋帮你祈福>_<言出必践! |
|