搜索
bottom↓
回复: 6

★★ 请教双向IO口(inout)数据类型使用 8051总线双向IO口 老是错误

[复制链接]

出20入186汤圆

发表于 2012-2-8 10:14:55 | 显示全部楼层 |阅读模式
module top(led_dat,bus_ale,bus_wr,bus_add_l,bus_rd,bus_add_h,led_seg);
    output[7:0] led_dat;    //测试LED
    reg[7:0] led_dat;
    output[7:0] led_seg;    //测试LED段位
    reg[7:0] led_seg;
    input bus_ale;            //总线操作
    input bus_wr;            //总线写
    input bus_rd;            //总线读
   
    input[7:0] bus_add_h;    //总线地址高8位
    reg[15:0] bus_add;        //16位地址总线
   
    inout[7:0] bus_add_l;    //总线低8位 & 数据
    reg bus_dat_oe=0;        //bus_add_l输出使能 默认禁止输出
    reg[7:0] bus_dat_out;    //bus_add_l输出缓存
    reg[7:0] bus_dat_in;    //bus_add_l输入缓存
   

    assign bus_add_l=bus_dat_oe?bus_dat_out:8'hz;    //如果输出使能 则输出,否则高阻   
   
    always @(negedge bus_ale)    //获取总线地址
    begin
        bus_add={bus_add_h[7:0],bus_add_l[7:0]};
    end
   
    always @(negedge bus_wr)    //总线写操作 读取数据
    begin
        bus_dat_in=bus_add_l;
        case (bus_add)
            16'h1:led_seg=bus_dat_in;
            16'h2:led_dat=bus_dat_in;
        endcase
    end
   
    always @(negedge bus_rd)    //总线读操作 输出数据
    begin
        case (bus_add)
            16'h1000:bus_dat_out=8'h01;
            16'h00f1:bus_dat_out=8'hf2;
            default:bus_dat_out=8'hx;
        endcase
        bus_dat_oe=1'b1;
    end
   
    always @(posedge bus_rd)    //总线读操作复位
    begin
        bus_dat_oe=1'b0;        //error1
    end        
endmodule


//error1  总是在此处提示错误~

Error (10028): Can't resolve multiple constant drivers for net "bus_dat_oe" at top.v(45)
Error (10029): Constant driver at top.v(35)
Error: Can't elaborate top-level user hierarchy
Error: Quartus II Analysis & Synthesis was unsuccessful. 3 errors, 0 warnings
        Error: Peak virtual memory: 169 megabytes
        Error: Processing ended: Wed Feb 08 10:12:59 2012
        Error: Elapsed time: 00:00:00
        Error: Total CPU time (on all processors): 00:00:00
Error: Quartus II Full Compilation was unsuccessful. 5 errors, 0 warnings


还请大家指点,另外inout数据类型是这样用的么?我这是与51单片机构成总线~
之前51单片机写总线没有问题了,可读的时候我改成了双向IO口,但这样编译出错~

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-2-8 21:19:06 | 显示全部楼层
多次 驱动了
对bus_dat_oe的操作只能放在一个进程中

出20入186汤圆

 楼主| 发表于 2012-2-9 08:50:32 | 显示全部楼层
谢谢~ 试试~

出20入186汤圆

 楼主| 发表于 2012-2-9 08:55:16 | 显示全部楼层
我放在一个进程里驱动了,我想问下为什么不能在两个进程里驱动?原因是啥呢?

出0入0汤圆

发表于 2012-2-9 09:03:40 | 显示全部楼层
回复【3楼】yuyu87 雨
我放在一个进程里驱动了,我想问下为什么不能在两个进程里驱动?原因是啥呢?
-----------------------------------------------------------------------

这是硬件电路 不是变量
你能把两个74系列芯片的逻辑输出端口接到另外同一个74系列的输入端口吗?

出20入186汤圆

 楼主| 发表于 2012-2-10 16:31:52 | 显示全部楼层
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5397202&bbs_page_no=1&search_mode=3&search_text=yuyu87&bbs_id=9999

问题已解决,谢谢大家~

出0入0汤圆

发表于 2012-2-14 10:21:15 | 显示全部楼层
学习了!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 11:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表