首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的双向端口只给我的输出,而8'hxx作为输入?

为什么我的双向端口只给我的输出,而8'hxx作为输入?
EN

Stack Overflow用户
提问于 2021-01-20 04:03:26
回答 1查看 78关注 0票数 0

我正在尝试使用一个输入输出端口作为内存的dataBus。我已经为dataBUs_in和输出dataBus_out设计了一个截然不同的输入端口。后来将它们链接到顶部模块中的双向端口。模拟inout端口后,只给出输出datBus_out,对于dataBus_in,它显示8'hxx。此外,我还尝试在RAM设计中使用两个always块,每个块用于写入和读取。

topmodule代码:

代码语言:javascript
运行
复制
ram_cpu ram_cpu_top(
    .clock(top_clock),
    .write(top_write),
    .writeBar(top_writeBar),
    .ramEnable(top_ramEnable),
    .dataBus_in(top_dataBus_in),
    .addressBus(top_addressBus),
    .dataBus_out(top_dataBus_out)
    );
    assign dataBus = (internal_control == 1'b0) ? top_dataBus_in : 8'hzz;
    assign top_dataBus_out = dataBus;

内存设计:

代码语言:javascript
运行
复制
always @ (posedge clock)
begin //write
    if(ramEnable) begin
        if(write == 1'b1) begin
            
            ram[addressBus] <= dataBus_in;
        end 
  
        
    else if(write == 1'b0) begin
            dataBus_out <= ram[addressBus];     
             
        end 
        
    end 
end 
EN

回答 1

Stack Overflow用户

发布于 2021-01-20 08:16:52

dataBus是常见的双向网络。top_dataBus_in应该由dataBus驱动。top_dataBus_out应该有条件地驱动dataBus

代码语言:javascript
运行
复制
assign top_dataBus_in = dataBus;
assign dataBus = (internal_control == 1'b0) ? top_dataBus_out : 8'hzz;

注意:当internal_control为1时,应该有其他逻辑驱动dataBus,否则它将是浮动的。只有noting需要感知值时,才可以使用浮点型。在大多数双向设计中,下拉或上拉连接到总线。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65798683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档