1
\$\begingroup\$

I'm looking at prototyping a design I plan to build using logisim. The design will make use of a FIFO IC (74HC40105) as a buffer between a data producer process and a data consumer process. I can't seem to see a reasonable way of building the behaviour of the FIFO out of the basic components that logisim provides, however.

A shift register isn't quite right, because that requires the data to be fed in in advance to fill the buffer, whereas with the FIFO the data is available at the output after the first item is added; I don't need to wait for it to propagate through all the stages.

I considered simulating it using a RAM and read and write pointers to a circular buffer, but the downside with that is that (as noted in the description of this project which used the approach) you can't both shift in and out on the same cycle, which is because logisim's RAM only has a single address port, so can't handle true dual port simultaneous read and write (you could implement one this way in an FPGA, for example, because they usually support dual port RAMs).

Is there another way I haven't considered that would make it possible to implement a FIFO that lets both the data producer and consumer operate entirely independently in logisim?

\$\endgroup\$
1
\$\begingroup\$

74HC40105 data sheet has a schematic, so maybe Logisim has the modules that make up the IC?

Not an answer for Logisim, but, hopefully a solution to your issue... You could write RTL that represents the 74HC40105 and use EDA Playground (it has LOC limits I think), or DL another free simulator.

\$\endgroup\$
  • \$\begingroup\$ The 74HC40105 datasheet's schematic uses standard RS flipflops, but unfortunately Logisim's implementation of those is a little non-standard (they have an additional clock input and only change on clock transitions). But the RTL option is looking good -- I'm currently evaluating the idea of switching to logisim-evolution which is a fork of logisim that allows implementing additional modules in VHDL. Unfortunately, it isn't backwards compatible, so I'll need to spend some time updating my existing designs, so I'm still looking for another way. \$\endgroup\$ – Jules May 25 '18 at 16:51
  • \$\begingroup\$ ... hmm, except that logisim-evolution apparently needs a commercial simulator that I don't have a copy of. Oh well. Will try other choices... \$\endgroup\$ – Jules May 25 '18 at 20:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.