Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
17268 Discussions

Using internal tri-state signals in bus systems

Altera_Forum
Honored Contributor II
1,297 Views

I'm writing a simple bus system, and I'm using internal tri-state signals for the data out bus (that converts to muxes, or something similar). So far so good.  

 

The problem is the read ack signal. I want a simple or-logic that allows me to ack a bus read from serveral entities. The first attempt was to set RDACK <= 'L' when idle, but this is not (properly?) implemented in quartus, since it seems do work like '0'. Setting RDACK <= 'Z' yields no error, but it sets the entire bus constantly high (from a tool point of view this makes sense: no entity will ever drive '0' on the line, thus it can be set as constantly high). 

 

I can provide additional information, but this seems like a standard problem that should have a standard soloution. I dont feel like cluttering up my design with a huge or-gate if I dont have to...
0 Kudos
3 Replies
Altera_Forum
Honored Contributor II
558 Views

If I have well understood your problem, you would like to avoid that the bus is held high while waiting for a read ack. While keeping your setting RDACK <= 'Z' you can use an external pull-down resistor to keep the bus low. So you don't need a huge OR gate to read an ack signal in your bus. 

Is this OK for you?
0 Kudos
Altera_Forum
Honored Contributor II
557 Views

Do I understand right that you are talking of an internal (virtual) wired-or bit bus? So the said huge or-gate would be synthesized at gate level anyway, it's just a matter of convenience trying to use a wired-or in the HDL representation. 

 

I fear, that the HDL compilers have no means to represent an internal wired or. The VHDL Standard VHDL Synthesis Package specification (1076.3) tells, that a synthesis tool shall interpret the forcing and weak values both as logic 0 and 1, respectively (Clause 4.3.1). Consequently, Quartus regards a 'L' and a '1' driving the same signal as multiple source error.
0 Kudos
Altera_Forum
Honored Contributor II
557 Views

Sorry for beeing a bit unclear, after all it was very late.... 

 

Yes FvM, this is exactly my problem. In hardware, the or gate will exist either way, but having it hidden in a virtual tri-state signal would look better on the schematics. 

 

Maybe there is a megawizard function for this?
0 Kudos
Reply