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

236 Commits

Author SHA1 Message Date
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
Andreas Olofsson
d7ba590250 Changing back to sync for iddr
-not sure what to do here!!!
2015-10-07 21:58:06 -04:00
Andreas Olofsson
cd597cd5b1 Fixing RX reset (again!)
-async assert
-sync deassert
2015-10-07 20:37:49 -04:00
Andreas Olofsson
028bf19382 TX clock and reset cleanup
- more modular
- two bits cominng from sys_clk elink config domain
- drives the tx and rx from top level elink
- from software you would probably write 2'b11 to reset both at same time
2015-10-07 19:15:29 -04:00
Andreas Olofsson
0f24486a5f RX reset/clocking cleanup
- Making all resets async since we cannot guarantee that we have a clock coming in from RX. This is needed due to the way we use a PLL for alignment. If we would have used a free running local clock this would have been different, but this would have required a FIFO for synchronization betwen the rx and rxdiv4 clock.
- Moving the clock block into the RX for modularity
- Making a specil rx soft reset (driven from sys_clk domain)
- Still there is a POR_reset so the link should wake up ok
2015-10-07 19:12:57 -04:00
Andreas Olofsson
bd2a687412 Cleaning up TX reset
- sync on logic
- async on ODDR logic
- moving sync logic to clock block
2015-10-07 19:12:01 -04:00
Andreas Olofsson
4477f55cf5 Separating clocks for tx/rx
- more modular, understandable, reusable
2015-10-07 19:08:32 -04:00
Andreas Olofsson
947a804c62 Making reset async
- making ecfg_elink reset only depend on por (otherwise chicken and egg)
-
2015-10-07 14:46:12 -04:00
Andreas Olofsson
d7d959da45 Adding software programmable IDELAY
- This is DEFINITELY the way to do things, sweep the delays and find the right value. No f'ing way to get these stupid FPGAs to work otherwise with the ridiculuosly over margined PVT nubmers they are running through the STAs. I understand they want to make the design bullet proof, but as a result designers are wasting countless hours overoptimzinng designs and being clever. So much performance is left on the table for expert users.
- Lesson: I/O design should be "self syncrhonizing". Only contraints in the design should be create_clk
- Made RX clock async, too tricky to guarantee that there clock is there.  No way to do this if the clock sources are actually independent for RX/TX!
2015-10-07 11:49:46 -04:00
Andreas Olofsson
8bba86d6cd Adding static phase shif ton RXCLK
-this becomes irrelavent once we have the dynamic idelay on input
2015-10-07 08:57:50 -04:00
Andreas Olofsson
6428f5ee46 Driving clocks from MMCM instead of from BUFIO 2015-09-30 13:00:45 -04:00
Andreas Olofsson
eaea05d0cd Fixed pll clocking bug
-apparantly the MMCM needs a reset after the clock changes
-need to hold reset high until we know that there is an active clock on input
-doesn't it make more sense to use idelay?
2015-09-27 08:41:24 -04:00
Andreas Olofsson
415b8113df Adding proper "ETYPE" for wait signals
-single and diff should be fully supported
2015-09-27 08:40:36 -04:00
Andreas Olofsson
8b9ddb5d34 Hard coding for ephycard, may need to fix back later... 2015-09-25 15:21:21 -04:00
Andreas Olofsson
22a2443d1e Removed rendundant clock 2015-09-25 15:20:21 -04:00
Andreas Olofsson
cfbbfeb574 Adding "ETYPE" as a parameter
-set to 0 for parallella
-set to 1 for ephycard
2015-09-14 22:03:22 -04:00
Andreas Olofsson
58226bc867 Returned erx_io to old format!
-Burst works again!
-There was definitely a bug on the frame signal, need to pay close attention to all the clock signals, let's review!
2015-09-14 22:02:16 -04:00
Andreas Olofsson
0415b01753 Clock changes
-separated PLL and MMCM
-rx clock only on PLL
-removed lock (fix further)
-simplified parameters, more intuitive to change
2015-09-14 20:25:12 -04:00
Andreas Olofsson
23e0f60388 cleanup 2015-09-14 13:28:44 -04:00
Andreas Olofsson
0bfd4d85fc Adding sim parameter
-lenth of reset pulse should be driven from sim environment
2015-09-11 18:25:08 -04:00
Andreas Olofsson
c00003e9a3 Changing clocks back:
-txclk should depend on the sysclk not rxclk
2015-09-11 18:24:00 -04:00
Andreas Olofsson
52cded4eb2 Fixing Icarus compile error
-multi dimensional parameters not working
-trying with regs
2015-09-11 12:08:46 -04:00
Andreas Olofsson
0ec0794bbd Filling in missing parameters
-needed for Icarus verilog simulator
2015-09-11 12:08:07 -04:00
Patrik Lindström
137d8bfdb0 Changing receiver clock
Signed-off-by: Patrik Lindström <lindstroeem@gmail.com>
2015-09-01 16:11:52 +02:00
Patrik Lindström
1a642a31d6 Removing ephycard define
Signed-off-by: Patrik Lindström <patrik.lindstrom@foi.se>
2015-08-25 12:40:48 +02:00
Patrik Lindström
5e8b10eafb Bug fixes
Signed-off-by: Patrik Lindström <lindstroeem@gmail.com>
2015-08-24 22:50:28 +02:00
Patrik Lindström
98a17d6ccf Changing RX clocking
Signed-off-by: Patrik Lindström <lindstroeem@gmail.com>
2015-08-24 22:39:51 +02:00
Patrik Lindström
9d71189f93 Changing the receiver to use both frame signals
Signed-off-by: Patrik Lindström <lindstroeem@gmail.com>
2015-08-24 21:39:31 +02:00
Patrik Lindström
f9c2a5abf3 moving idelay controller to eclocks.v
Signed-off-by: Patrik Lindström <lindstroeem@gmail.com>
2015-08-24 21:08:49 +02:00
Andreas Olofsson
9bc40a8355 Fixing wait issue
-Removing the wait signal from the pipeline
-Assumption is that the prog_full is used on fifo, allowing two entries
to be captured in fifo.
-May revisit this at some time...
2015-08-14 17:13:52 -04:00
Andreas Olofsson
ede8656081 Fixing mutual exclusive bug on receiver
-When a read response is detected, there should be no spurious transactions to the RD/WR request fifos.
-Move the "filter" backt to the erx_protocol block
-Removed the remap bypass signal (was hacky)
-Passes simulations again..
2015-08-14 15:37:37 -04:00
Andreas Olofsson
8e32299f2c Copyright cleanup 2015-08-07 09:19:37 -04:00
Andreas Olofsson
7df92eb1f0 Removing DMA from transmit
* Seems like a useless feature. Why autogenerate the transactions at the transmit side. This should always be done at the receive side to minimize bits moving across the link.  Can't really see a use for it anymore so I am removing it.
* If you want to hack the design to reduce latency, you can always grab the raw etx_core and drive signals directly through write port.
* May consider adding a fourth port to etx to allow bypassing  the link interfac?
* Add an ifdef to bypass the fifos?
2015-08-07 09:05:11 -04:00
Andreas Olofsson
36e8f78370 README changes and various fixes 2015-08-07 07:56:30 -04:00
Andreas Olofsson
9379484f65 Fifo parameter change
-Changing parameter name to DW
-Making depth 32 for axi interfaces
(tune this later...)
2015-07-02 16:55:42 -04:00
Andreas Olofsson
f1b37ab4c4 Ephycard should not be default 2015-07-02 16:54:31 -04:00
Patrik Lindström
a20c9f25ec clean up 2015-07-02 15:01:33 +02:00