1
0
mirror of https://github.com/aolofsson/oh.git synced 2025-01-17 20:02:53 +08:00

322 Commits

Author SHA1 Message Date
Andreas Olofsson
1cdc384863 Cleaning up logic for new burst mode "bit[2]" 2015-11-17 09:48:29 -05:00
Andreas Olofsson
d14cc0f258 Added missing burst bit for legacy elink...
- This is a pain in the ass and should never have been implemented in the first place!
- Burst information is contained in two places, once in the first byte being transmitted and once by the frame staying high
- This was done because there was a second special bursting mode where data is streamed into the same address, so bit[2] becomes a "command bit".
2015-11-17 09:46:22 -05:00
Andreas Olofsson
3102d6cd44 Adding comments 2015-11-16 09:58:47 -05:00
Andreas Olofsson
51c8ae600d Burst works (really this time!!!)
-Solved a speed path in synchronizing the wait signal, had to use the first edge signal fo the IO and the lclk_div4 for the core logic. It seems that the FPGA has a really hard time mixing clock domains, the routing delay between domains explodes
-Put in some special case logic for edge cases, like when there is a wait coming in from the IO and there is a wait from the IO. In that case, the packet gets sampled by the IO and not by the current logic.
-This needs to be cleaned up eventually, not clean enough but it's good enough for now.
2015-11-16 00:42:34 -05:00
Andreas Olofsson
5197822f53 Fixing burst logic speed path
- The burst signal was going fro lclk_div4 domain straight into the io high speed domain. There is quite a bit of logic on this signal. Instead of starting with false paths or multi cycle paths with firstedge, I changed the pipeline.
2015-11-15 12:26:54 -05:00
Andreas Olofsson
f77938e9b0 Simplifying TX logic!!!!
- The logic was a mess, causing me to go around in circles for days. In the end, by adding a missing sync circuit (duh!) between the fast and slow clock to align the edges and removing a redundant pipeline stage ("double") the nasty logic just fell away. Looks good now.
-Write bursts mostly works and design looks clean.
-one bug left to fix on streams of writes...
2015-11-15 01:35:46 -05:00
Andreas Olofsson
431abcda57 Removing write decode from wait pushback 2015-11-15 01:35:04 -05:00
Andreas Olofsson
df0deabd0f Re-re-fixing the wait on RX
- (fixing a temporary bad commit)
2015-11-15 01:34:20 -05:00
Andreas Olofsson
c1beed9a13 Two more wait bugs for burst
- The burst signal needs to be pipelined like everything else (0th order..)
- Don't look at write signal when pushing back wait...WILL GO BACK AND REVISIT THIS ONE LATER.
- Yeah, burst write test now passes!!!!
2015-11-13 17:26:05 -05:00
Andreas Olofsson
52b328c194 Redesign of elink transmitter
- Old design was not workable with bursting and long waits. The wait signal needs to be very carfully handled since it's asynchronous to the clock.
-The TX needs to be stopped quickly so the sync needs to be done at the high speed clock, not at div4 clock
-Since there are synchronizers here, there should be only one point of sync. This is not completely the case still, but I think??? it should be safe by constructiona at this point.
-bursting working at this point for writes!!!!!
2015-11-13 16:31:59 -05:00
Andreas Olofsson
78a72aa428 fixing packet format for remap block 2015-11-13 16:31:29 -05:00
Andreas Olofsson
a335194dea fixing packet reshuffling bug 2015-11-13 16:30:33 -05:00
Andreas Olofsson
f7806821c7 Various wait cleanups in RX
- using rx reset, safer as this stays in reset longer, until the clock has hade time to clean up the rest
2015-11-13 16:28:40 -05:00
Andreas Olofsson
a9e034bef9 Bringing access low during wait 2015-11-12 00:58:06 -05:00
Andreas Olofsson
1dcd9a82bd Fixing burst transmit bug
- The burst should be interrupted as soon as there is a wait signal. When the wait stops, a new frame naturally starts.
2015-11-11 22:33:54 -05:00
Andreas Olofsson
867b750c50 Adding write from stimulus to dv link1
- also, more cleanup of ID parameters
2015-11-11 14:02:02 -05:00
Andreas Olofsson
c885745f6c Fixing half/byte zero-out bug
- Interrupted mid coding apparently..
- Upper bits need to be zeroed out for 8/16 bit read responses
2015-11-11 14:00:13 -05:00
Andreas Olofsson
0a2ea66b7e Bug fix. Adding missing ID parameter.
- would only show up at different ID
- better to always make defauly nonsense
- sneaky...
2015-11-11 13:58:04 -05:00
Andreas Olofsson
7f0698bbc8 Fixed ctrlmode bug
- Found this by trying to toggle the LED in hardware!!
- So freaking close!!
2015-11-10 22:29:30 -05:00
Andreas Olofsson
5840c3e369 Fixing reset bug
- There is a register reset by out_clk reset on fifo_cdc
- This means the config path needs to us rx synched reset to be clean
2015-11-10 09:19:45 -05:00
Andreas Olofsson
f2b2c4fd00 Balancing TXclocks
- Better to be balanced with clocks (BUFG) than trying with BUFIO and having CDCs. Tools warned about it...
2015-11-10 09:19:01 -05:00
Andreas Olofsson
04cd179f5a Lint fixes for icarus/verilator 2015-11-09 21:57:25 -05:00
Andreas Olofsson
243ba6b608 Speedpath fix for rx io
- reduce fanout on IDDR block
2015-11-09 21:56:46 -05:00
Andreas Olofsson
efef6448c2 Fixing wait bug on config write (2 bugs)
- missing reset on wait signal
- missing wait on cfg
2015-11-09 21:55:46 -05:00
Andreas Olofsson
e2c917b6f9 Fixed packet reformatting bug 2015-11-09 20:38:55 -05:00
Andreas Olofsson
497dd71aaa Fixed readback bug
- there were hard coded magic number in code, bad practice!
- now works!
2015-11-09 20:38:12 -05:00
Andreas Olofsson
13d29f8e67 Stupid typos.. 2015-11-09 16:18:20 -05:00
Andreas Olofsson
61eb56c6f7 Final Vivado fixups:
- reduced frame fanout, removed clock gater in erx_io (improves speed path)
- driving constants on "wid signals" (proper)
- making lock signal 1 bit wide to remove warning
- moved backed to BUFIO for IDDR blocks
2015-11-09 16:09:12 -05:00
Andreas Olofsson
55ba8ff635 Cleaning up warnings from FGPA tools
- removing unconnected ports
- only one rst input for async_fifo
- synchronizing the reset input toe emaxi fifo
2015-11-09 13:23:40 -05:00
Andreas Olofsson
bf614a9873 Cleaning up fifo interface
- removing redundant signals
- configuring to put synchronizer inside fifo
- one reset only (not two)
2015-11-09 13:20:46 -05:00
Andreas Olofsson
01fd24e069 Fixing synchronization reset speed path
- This seems silly, why even have a syncrhonizer
- Safe to set speed path?
2015-11-09 00:16:35 -05:00
Andreas Olofsson
3797cac74f Solving critical paths for TX/RX
- Using the BUFIO makes another clock domain....FPGAs apparently hate clock domain crossings, avoid them at all cost.
- Now moving back to having on high speed clock domain for logic and DDR blocks, take care of IO alignment in software for TX and RX
- Also, fixed the io_wait path with logic...not sure what I was thinking there. Logic was trivial. The way it was,the io path was going straight into the FIFO as a wait.
2015-11-08 23:28:39 -05:00
Andreas Olofsson
65f772ddef Fixing careless mistakes.. 2015-11-06 22:51:09 -05:00
Andreas Olofsson
9383f32764 Making sure ETYPE is set to 0. 2015-11-06 22:41:43 -05:00
Andreas Olofsson
b6c95e5b94 Cleanup 2015-11-06 22:34:08 -05:00
Andreas Olofsson
5e18ed8c52 Making defines unique 2015-11-06 22:33:33 -05:00
Andreas Olofsson
63bf5d25a4 Moving to active low reset
- Because this is the right thing to do for chips
- Not going to tell you why...
2015-11-06 16:51:57 -05:00
Andreas Olofsson
3969e6d19e Moving to MIT license 2015-11-06 11:25:05 -05:00
Andreas Olofsson
6a423b5999 Improcing mmcm/pll clock path
-apparantly the BUFG in the feedback was not liked by the P&R
2015-11-04 20:02:45 -05:00
Andreas Olofsson
36b0f14ca5 "Fixing" wait signal
- Giving a wait on every ack just doesn't make sense on the read port with a fifo there??
- Makes for a nasty combinatorial loop during integration.
- Test passes (but need to look into this more)
2015-11-03 19:49:38 -05:00
Andreas Olofsson
6114471935 Adding active signal to interface
- kind of like "pll lock"
2015-11-03 19:49:09 -05:00
Andreas Olofsson
b4daf73157 Optimizing clock path
* Sven's help!
* Better to use bufio to keep all paths internal, more determenistic path
2015-11-03 14:15:09 -05:00
Andreas Olofsson
d7bf1389d6 Changing idelay bit map
- the 5 bit fields was driving me nuts!
- always work in nibbles, place the msb elsewhere (or work with 16 bit values)
2015-11-03 10:31:06 -05:00
Andreas Olofsson
971b591454 Shifting first byte of packet down by one bit to accomodate new format
- this of for future proofing
2015-11-02 20:51:35 -05:00
Andreas Olofsson
983c4db449 Link cleanup
- Using new packet interface
- Adding active signal, indicating that link is ready. This way you don't need to guess when the link is ready (no magic constants)
- Removed register on por reset input to get rid of x on startup.
2015-11-02 16:10:05 -05:00
Andreas Olofsson
581c2943f5 Fixing pushback bug in emmu
- reset was broken!
- need to account for wait
- merging read/write wait for simplicity, otherwise you would need to reset the packets to figure out if it's a read or write transaction...and I don't want to reset every packet throughout the pipe.
2015-10-19 11:08:28 -04:00
Andreas Olofsson
d275406aa6 Reset timing optimization
- holding rx in reset state until tx is done
- removing reset from all pipeline registers
- removing reset from oddr/iddr
- the idea is to keep things quiet not to block in lots of places. The only real block needed is in the FIFO to keep "noise" from propagating past the link. The link should be kept in a safe reset state until the rx fram is stable and the clock is running so that the pipe can be cleaned out.
2015-10-08 10:34:59 -04:00
Andreas Olofsson
6d2b3d63fe Improving sys_reset timing
- removing pass through path
- registering sys_reset input
2015-10-08 10:33:38 -04:00
Andreas Olofsson
86e8579e48 Adding testmode for RX 2015-10-07 21:58:50 -04:00
Andreas Olofsson
e1f17b2fa1 Fixing PLL feedback path 2015-10-07 21:58:30 -04:00