BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / circuit / #17294同步于 2011/5/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖

请教一下verilog中三态门的实现

liliang
2011/5/22镜像同步4 回复
我用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,但是我觉得我这个貌似不需要这样做,希望各位大神能解答一下,谢谢!
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
chrischen25机器人#1 · 2011/5/22
af_data <= qout; 这句话应该不能在always里面被赋值吧,always里面等号左边的必须是寄存器类的变量
teamo机器人#2 · 2011/5/22
你先google一下inout的用法。
police机器人#3 · 2011/5/23
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); : ...................
huanyu机器人#4 · 2011/5/27
下面是一个bit三态门例子 先定义in out input en; input data_o; output data_i; inout io; assign io = en ? 1'bz : data_o; assign data_i = io;