Verilog语言求助

小猪烟烟
小弟最近写了一个ADC的驱动程序,里面应用到了三态接口,可是程序综合完了之后和预期设计不符合,查了各种资料始终也无法解决,求大神帮助啊!
跪求了!!!

互爱互助!!!
飞狐飘雪
详述一下!
小猪烟烟
ADC与FPGA数据接口为一个8位的三态接口,写寄存器时候以及读取ADC数据均从该8位接口。我写了一个8位的三态接口的子模块,然后例化之后就变成了四个三态接口和四个OD门,通过SGT观察,数据写入正常,读取的数据和给定信号不符合,然后我查看了时序,没有问题,我就只有猜测是三态接口的问题了(第一次使用三态接口)。
另外,我对三态口下载程序时候有过赋值
dinout dinout1(.din(reg_adcontrol[7:0]),.z(z),.clk(clk),.dout(wire_ad2cpu),.dinout(Low_DB));
module dinout(din,z,clk,dout,dinout);
input [7:0] din;
input z;
input clk;
output [7:0] dout;
inout [7:0] dinout;
reg [7:0] dout;
reg [7:0] din_reg;
assign dinout=(!z)? din_reg:8'bz
always@(posedge clk)
begin
if(!z)
din_reg=din;
else
dout=dinout;
end
endmodule
飞狐飘雪 #2
详述一下!

互爱互助!!!
小猪烟烟
求给力啊!!! 我纠结了好多天了 一直不行
飞狐飘雪 #2
详述一下!

互爱互助!!!
帅是一种精神
寥寥数笔 能看出神马来啊~
帅是一种精神
http://wenku.baidu.com/link?url=n_RuQ6gXHCiwNMVMww2K4xcAqqnYJHhakspay8nTy987_GMWxeZPF_fLGhvSAe9K9tGrU6WC6G9uhsjuC7MBCRBMsdey0XdIDBj-MqlAYeW
小猪烟烟
谢谢兄台热心!这些资料我翻了好多遍了,还是不行啊!要是可能,要不亲自自导下吧!
帅是一种精神 #6
http://wenku.baidu.com/link?url=n_RuQ6gXHCiwNMVMww2K4xcAqqnYJHhakspay8nTy987_GMWxeZPF_fLGhvSAe9K9tGrU6WC6G9uhsjuC7MBCRBMsdey0XdIDBj-MqlAYeW

互爱互助!!!
江湖小范
仿真吧
小猪烟烟 #1
小弟最近写了一个ADC的驱动程序,里面应用到了三态接口,可是程序综合完了之后和预期设计不符合,查了各种资料始终也无法解决,求大神帮助啊! 跪求了!!!

这个世界什么最多?人最多。这个世界什么最少?你最少!
苦舟载乐
楼下的来帮忙

专家说不能空腹吃东西,之后我就死了.
小猪烟烟
modelsim仿真是没有问题的,可是就是结果不对!
江湖小范 #8
仿真吧

互爱互助!!!
飞狐飘雪
你表达的意思是不是数据输入是dinout,数据输出也是用dinout?如果是这样的话要din和dout干什么? 你是否想将数据存入到一个register中也就是din_reg中,通过dinout输入和输出?如果是这样的话我建议用如下代码试试:
module dinout(z, clk, dinout);
input z;
input clk;
inout [7:0] dinout;
reg [7:0] data;
always(posedge clk)begin
if(z)
data <= dinout;
end
assign dinout = z ? 8'hz : data;
endmodule
如果有reset拉进去就更好了。
如果不是还请详述。
小猪烟烟 #3
ADC与FPGA数据接口为一个8位的三态接口,写寄存器时候以及读取ADC数据均从该8位接口。我写了一个8位的三态接口的子模块,然后例化之后就变成了四个三态接口和四个OD门,通过SGT观察,数据写入正常,读取的数据和给定信号不符合,然后我查看了时序,没有问题,我就只有猜测是三态接口的问题了(第一次使用三态接口)。 另外,我对三态口下载程序时候有过赋值 dinout dinout1(.din(reg_adcontrol[7:0]),.z(z),.clk(clk),.dout(wire_ad2cpu),.dino...
ytpaul
这个写法没法综合,你可以先将信号打入寄存器,然后再送上总线。 另外,你给信号起名叫z,或许应该换个名字吧。看着很不顺眼,毕竟z在verilog中也是高阻的意思。
莱茵河
乱七八糟