yuyu87 发表于 2012-2-8 10:14:55

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

module top(led_dat,bus_ale,bus_wr,bus_add_l,bus_rd,bus_add_h,led_seg);
    output led_dat;    //测试LED
    reg led_dat;
    output led_seg;    //测试LED段位
    reg led_seg;
    input bus_ale;            //总线操作
    input bus_wr;            //总线写
    input bus_rd;            //总线读
   
    input bus_add_h;    //总线地址高8位
    reg bus_add;      //16位地址总线
   
    inout bus_add_l;    //总线低8位 & 数据
    reg bus_dat_oe=0;      //bus_add_l输出使能 默认禁止输出
    reg bus_dat_out;    //bus_add_l输出缓存
    reg 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,bus_add_l};
    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口,但这样编译出错~

281229961 发表于 2012-2-8 21:19:06

多次 驱动了
对bus_dat_oe的操作只能放在一个进程中

yuyu87 发表于 2012-2-9 08:50:32

谢谢~ 试试~

yuyu87 发表于 2012-2-9 08:55:16

我放在一个进程里驱动了,我想问下为什么不能在两个进程里驱动?原因是啥呢?

g47603690 发表于 2012-2-9 09:03:40

回复【3楼】yuyu87 雨
我放在一个进程里驱动了,我想问下为什么不能在两个进程里驱动?原因是啥呢?
-----------------------------------------------------------------------

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

yuyu87 发表于 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

问题已解决,谢谢大家~

mailtoyj518168 发表于 2012-2-14 10:21:15

学习了!!!
页: [1]
查看完整版本: ★★ 请教双向IO口(inout)数据类型使用 8051总线双向IO口 老是错误