返回信息流我用data_dir作为数据方向控制信号,clock为时钟信号,af_data[7:0]为双向端口,qout为内部模块输出,cfg_data为内部模块的输入。
代码如下:
module Af_Inter(clock, data_dir, qout, cfg_data, af_data);
input clock;
input data_dir;
input [7:0] qout;
output [7:0] cfg_data;
inout [7:0] af_data;
reg[7:0] cfg_data;
//assign af_data = (!data_dir)?qout:8'bZZZZZZZZ;
always @(posedge clock)
begin
if(data_dir)
af_data <= qout;
else
cfg_data <= af_data;
end
endmodule
编译以后会出现:Error (10137): Verilog HDL Procedural Assignment error at Af_Inter.v(14): object "af_data" on left-hand side of assignment must have a variable data type
这是什么原因啊,看书上说在不读取的情况下将af_data置为8'bZZZZZZZZ,但是我觉得我这个貌似不需要这样做,希望各位大神能解答一下,谢谢!
这是一条镜像帖。来源:北邮人论坛 / circuit / #17294同步于 2011/5/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖
请教一下verilog中三态门的实现
liliang
2011/5/22镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
inout不是这么用的
比如这样用就没事了。。。
assign ld = lwr?16'bz:ld_out;
assign ld_in= (!lwr)?16'b0:ld;
【 在 liliang (HelloWorld) 的大作中提到: 】
: 我用data_dir作为数据方向控制信号,clock为时钟信号,af_data[7:0]为双向端口,qout为内部模块输出,cfg_data为内部模块的输入。
: 代码如下:
: module Af_Inter(clock, data_dir, qout, cfg_data, af_data);
: ...................
下面是一个bit三态门例子
先定义in out
input en;
input data_o;
output data_i;
inout io;
assign io = en ? 1'bz : data_o;
assign data_i = io;