Introduction: DIY Dynamic Memory Block
The SLG46880 and SLG46881 introduce several new blocks that haven’t appeared in previous
GreenPAK devices. This application note describes the Dynamic Memory (DM) blocks and how to use them.
The main advantage of DM blocks is that they can be reconfigured to perform different functions in different states of the SLG46880/1’s 12-state Asynchronous State Machine (ASM). This makes them a very flexible component, since they can be used one way in State 0 and another way in State 1.
Below we described steps needed understand how the GreenPAK chip has been programmed to create the Dynamic Memory Block. However, if you just want to get the result of programming, download GreenPAK software to view the already completed GreenPAK Design File. Plug the GreenPAK Development Kit to your computer and hit program to create the custom IC for the Dynamic Memory .
Step 1: DM Block Basics
There are 4 DM blocks in the Dialog GreenPAK SLG46880/1. An unconfigured DM block is shown in Figure 1.
All the DM blocks in the SLG46880/1 have the following resources:
● 2 look-up tables: a 3-bit LUT and a 2-bit LUT
● 2 multiplexers
● 1 CNT/DLY
● 1 Output block
Figure 2 shows the same DM block with colored-in connectors. (These colors do not appear inside
GreenPAK™ Designer, they are merely for illustrative purposes.) The Green connectors are inputs to the DM block from the Matrix. The orange connections are dedicated connections within the DM block, which cannot be changed or moved. The blue connectors are clock connections for the counter block. The purple connector can be used to trigger a state transition, but is not a general matrix connection. The yellow connectors are matrix outputs from the DM block.
Step 2: Creating New DM Block Configurations
To create a new DM block configuration, you’ll need to select a DM block and open its properties panel, shown in Figure 3. Now you can create a new configuration for this DM block by clicking the “+” icon in the top right. At this point, you can rename the configuration if you wish and configure the DM block however you want, by using its properties panel. You can delete an unnecessary configuration by selecting it from the dropdown menu, and clicking the “-“ button.
Each DM block can have up to 6 different configurations. Any DM block configuration can be used in
any of the ASM’s 12 states, but only one configuration per DM block per state is permitted. Figure 4 shows how the resource manager bar indicates that one of the DM0_0 configurations has been used. The number of configurations for DM0_0 was increased from 0/6 to 1/6.
Step 3: Use a DM Block to Trigger a State Transition
Figure 5 shows a few different ways to trigger a state transition. We’ve created new configurations for DM0_0 and DM1_0, and named them “myConfig” and “myConfig1”. The top DM is simply used as a 3-bit AND gate, since the top mux passes the output of the AND gate through, and the 2-bit buffer passes it along to the outputs block. (The 2-bit LUT could have also been configured as a buffer for the CNT/DLY block.) The “to ASM connector is used to trigger a state transition from State 0 to State 1. Similarly, a matrix connection from Pin5 is used to trigger a state transition from State 0 to State 2. Finally, DM1_0 is configured so that both muxes pass through the signal from Pin6. The counter is configured as a 100µs both edge delay, and the 2-bit LUT is an AND gate. Just like in DM0_0, the output block is used to trigger another state transition.
Step 4: Using a DM Block to Interact With Blocks Outside the ASM
As you may have noticed in the previous section, DM0_0’s output block has 3 “to Matrix” outputs, while DM1_0’s output block doesn’t have any matrix outputs. This holds true for DM0_1 and DM1_1 as well; DM0_1 has 3 matrix outputs, while DM1_1 has none. The 3 “to matrix” outputs can be connected to any other matrix connectors, like pins, LUTs, DFFs, etc. This is shown in Figure 6.
Note that once a connection has been made between a “to Matrix” pin and other blocks outside the
State Machine area, it will exist in every state, regardless of which DM configuration is used. In Figure 6, the top section shows myConfig0 of DM0_0, which exists in State 0. The bottom section shows myConfig1 of DM0_0, which exists in State 1. The top “to Matrix” connection in both configurations is connected to Pin3, while the middle one is connected to 2-bit LUT0. Only one of those “to Matrix” connections can be “active” at any time. There are 4 options in the properties panel menu for DM0_0 and DM0_1’s output block: ● Out0/1/2 keep ● Bypass to out0, out1/2 keep ● Bypass to out1, out0/2 keep ● Bypass to out2, out1/1 keep These settings are used to determine which of the three outputs are active in each configuration. If the first option is selected, the output of the DM block’s 2-bit LUT will not be passed to any of the three “to Matrix” outputs. The value of those three signals will remain unchanged in that state. However, if any of the other three options are used, the output of the DM block’s 2-bit LUT will be passed to out0, out1, or out2 respectively, and the value of the other two outputs will be kept unchanged.
Step 5: Design Example
In the above design example, the IN0, IN1, and IN2 are OR’d together. Meanwhile, IN3 is delayed by 1 ms and then AND’d with the output of the OR gate. The to Matrix block is configured so that the output of the DM block is sent to OUT0 in STATE0, while the values at OUT1 and OUT2 are kept.
Thanks to their reconfigurability, Dynamic Memory blocks in the Dialog GreenPAK SLG46880/1 are extremely flexible and can be used in a variety of ways. Once you get the hang of working with DM blocks, you’ll be able to create more complex designs by piecing together different DM block configurations in different ASM states.