Altera_Forum
Honored Contributor
15 years agotri-state bus inside FPGA.
Hello all.
I have a local bus in my design. (System Verilog).interface regs_if(input clk, input rstn);
logic tx_data;
logic rx_data;
logic tx_addr;
logic rx_addr;
logic wr;
logic be;
endinterfaceI have a lots of modules module artem_regrw_m# (
parameter ADDR
)(
output reg data,
output be_wr,
regs_if regs
);
….
endmodule;So, I can specify address of this module on bus etc. Now I need add a read delay. If data in this module is not ready I will up signal ws. But I will one signal ws for all modules. I will not make individual ws signal for each module and connect all of this modules with OR. Also quartus say for string: assign regs.tx_data = (ADDR == regs.tx_addr)?data:{64{1'bz}}; --- Quote Start --- Warning: Tri-state node(s) do not directly drive top-level pin(s). --- Quote End --- And. If regs.tx_addr is not compare to any ADDR I'm read {64{1'b1}}; But I will {32'BADADDR0,regs.tx_addr}; How can I make this? --- Quote Start --- assign regs.tx_data = (ADDR[19:3] == regs.tx_addr[19:3])?data:regs.tx_data; assign regs.tx_data |= (ADDR[19:3] == regs.tx_addr[19:3])?data:{64{1'b0}}; --- Quote End --- is't working.