Stefan Schippers
02/23/2022, 10:07 PMD1
and D2
, and 2 clocks, CK1
and CK2
. It has 1 output pin Q
that is updated with D1
on CK1 rising edge
or D2
on CK2 rising edge
. There is a minimum guaranteed distance between the 2 clock rising edge events, or the result will be undefined. The device is Edge triggered, so responds only on rising edges of either CK1 or CK2. What is the simplest working configuration you can get with skywater (sky130_fd_sc_hd
) standard cells? I prefer implementations with no 'pulse generators'. A simple solution is to create a pulse on clock rising edges (using delay inverter chains) and using latches. However i don't like these solutions as these present huge issues if the device is inserted in a synthetized clocked network, or more of such devices are chained, and are also difficult to handle with STA tools.
Double flip-flop truth table:
D1 CK1 D2 CK2 | Q
-------------------------------------
D1 rising X not rising | D1
X not rising D2 rising | D2
'X' means 'Any value'
Consider also adding a RESET
or RESET#
input (not shown in truth table) that sets Q=0
.
I have a working implementation but it is not very simple and i am wondering if it can be made simpler. I will show it later, as i don't want to bias your ideas.
Hard-core designers could also pick a transistor level schematic of a traditional flip-flop and add a second data pin and second clock input and create a new standard cell, instead of creating this device using existing standard cells.Tim Edwards
02/24/2022, 1:43 PMgpio_control_block
to drive each of the GPIOs, but the power-on state could be set for each one independently with a simple ROM block.Tim Edwards
02/24/2022, 1:47 PMPhilipp Gühring
02/25/2022, 8:20 AMStefan Schippers
03/01/2022, 4:47 PMTim Edwards
03/03/2022, 10:07 PMLinen is a search-engine friendly community platform. We offer integrations with existing Slack/Discord communities and make those conversations Google-searchable.
Powered by