可以将DMA映射到控制寄存器或数据路径。您可以从状态寄存器或数据路径中获得DMA。在数据路径的情况下,有可以读取和写入的寄存器(数据寄存器),但典型的DMA是使用FIFO来完成的。不能直接在PLD中触发器。
所有这些位置都有位置,它们都是内存映射的。没有额外的逻辑来包含。它们将被放置的确切位置将取决于设计如何映射到硬件。这是由生成工具处理的,这些工具将为您将使用的每个寄存器创建γ定义。然后这些定义将这些映射到物理地址。如果您查看作为任何生成的一部分生成的CyFielt.h文件,您将看到我所引用的定义。作为一个例子,我提出了一个简单的基于UDB的计数器,然后当我查看CyFielt.h文件时,我可以看到数据路径FIFO可以使用:
定义了反Ord1BurdBuSc8Audp0U0xF0YRG CyReGeB1UDB09YF0
寄存器由这个定义映射到UDB09中的特定F0寄存器。所有这些都在组件作者指南中描述,并涵盖在TDU指出的培训课程中。你对PSoC设计师做了评论。该产品是PSoC 1的开发平台,PSoC Creator是PSoC 3和PSoC 5的开发平台。你描述想要做音频效果。这将是UDB数据通路的一个挑战。我预计,这些效果将需要乘法和更多的计算比可能是数据通路。这些声音听起来可能更适合数字滤波器块(DFB)。在PSoC有很多不同的计算可能性。我有没有CPU交互UDB中做了一个简单的音频效果。我实现了一个USB用于I2S流音频播放,UDB中被用来控制音量。CPU是用来应对CapSense滑块输入量和期望值写入数据通路控制缩放,但CPU不接触数据。这都是通过DMA移动的。这是通过使用多用移位和加法。因此,可以使用数据通道来进行一些处理。这当然是可能的规模和使用相结合的信号通路。我不知道究竟要实现你想要的效果。你也可以参考我的博客:www.cypress.com/go/psocsensei具有DMA和数据通路的一些有益的探讨。- Brad Budlong
以上来自于百度翻译
以下为原文
You can DMA to either Control registers or the datapath. You can DMA from either a status register or the datapath. In the case of the datapath there are registers that you can read and write (data registers) but the typical DMA is done using the FIFOs. You cannot DMA directly to Flip-Flops in the PLD.
All of these locations have locations and they are all memory mapped. There is no additional logic for you to include. The exact location that they will be placed will vary depending on the how the design is mapped to the hardware. This is handled by the build tools which will create #defines for each of these registers that you will use. Then these #defines map these to the physical addresses. If you look at the file cyfitter.h that is generated as part of any build you will see the defines that I'm refering to. As an example I put a simple UDB based counter and then when I look at the cyfitter.h file I can see that the datapath FIFO FO can be referenced using:
#define Counter_1_CounterUDB_sC8_counterdp_u0__F0_REG CYREG_B1_UDB09_F0
The register is mapped by this define to a specific F0 register in UDB09.
All this is described in the Component Author guide and covered in the training classes that TDU pointed you to.
You made a comment about PSoC Designer. That product is the development platform for PSoC 1 and PSoC Creator is the development platform for PSoC 3 and PSoC 5.
You describe wanting to do audio effects. That will be a challenge for the UDB datapaths. I would expect that those effects will require multiplies and more computation than is going to be possible with the datapaths. These sound like they may be a better fit for the Digital Filter Block (DFB). There are a lot of different possibilities for computation in PSoC. I have done a simple audio effect with the UDBs without CPU interaction. I implemented a USB to UDB to I2S flow for audio playout where the UDBs were used to control the volume. The CPU was just used to respond to a Capsense slider to input the volume desired and write a value to the datapath to control the scaling, but the CPU never touches the data. That is all moved via DMA. This is done using a multiply implemented using shifts and adds. So some processing can be done using the datapaths. It is certainly possible to scale and combine signals using the datapath. I don't know exactly what will be required to implement the effects that you desire.
You can also refer to my blog: www.cypress.com/go/psocsensei
It has some useful discussion of DMA and Datapaths.
- Brad Budlong
可以将DMA映射到控制寄存器或数据路径。您可以从状态寄存器或数据路径中获得DMA。在数据路径的情况下,有可以读取和写入的寄存器(数据寄存器),但典型的DMA是使用FIFO来完成的。不能直接在PLD中触发器。
所有这些位置都有位置,它们都是内存映射的。没有额外的逻辑来包含。它们将被放置的确切位置将取决于设计如何映射到硬件。这是由生成工具处理的,这些工具将为您将使用的每个寄存器创建γ定义。然后这些定义将这些映射到物理地址。如果您查看作为任何生成的一部分生成的CyFielt.h文件,您将看到我所引用的定义。作为一个例子,我提出了一个简单的基于UDB的计数器,然后当我查看CyFielt.h文件时,我可以看到数据路径FIFO可以使用:
定义了反Ord1BurdBuSc8Audp0U0xF0YRG CyReGeB1UDB09YF0
寄存器由这个定义映射到UDB09中的特定F0寄存器。所有这些都在组件作者指南中描述,并涵盖在TDU指出的培训课程中。你对PSoC设计师做了评论。该产品是PSoC 1的开发平台,PSoC Creator是PSoC 3和PSoC 5的开发平台。你描述想要做音频效果。这将是UDB数据通路的一个挑战。我预计,这些效果将需要乘法和更多的计算比可能是数据通路。这些声音听起来可能更适合数字滤波器块(DFB)。在PSoC有很多不同的计算可能性。我有没有CPU交互UDB中做了一个简单的音频效果。我实现了一个USB用于I2S流音频播放,UDB中被用来控制音量。CPU是用来应对CapSense滑块输入量和期望值写入数据通路控制缩放,但CPU不接触数据。这都是通过DMA移动的。这是通过使用多用移位和加法。因此,可以使用数据通道来进行一些处理。这当然是可能的规模和使用相结合的信号通路。我不知道究竟要实现你想要的效果。你也可以参考我的博客:www.cypress.com/go/psocsensei具有DMA和数据通路的一些有益的探讨。- Brad Budlong
以上来自于百度翻译
以下为原文
You can DMA to either Control registers or the datapath. You can DMA from either a status register or the datapath. In the case of the datapath there are registers that you can read and write (data registers) but the typical DMA is done using the FIFOs. You cannot DMA directly to Flip-Flops in the PLD.
All of these locations have locations and they are all memory mapped. There is no additional logic for you to include. The exact location that they will be placed will vary depending on the how the design is mapped to the hardware. This is handled by the build tools which will create #defines for each of these registers that you will use. Then these #defines map these to the physical addresses. If you look at the file cyfitter.h that is generated as part of any build you will see the defines that I'm refering to. As an example I put a simple UDB based counter and then when I look at the cyfitter.h file I can see that the datapath FIFO FO can be referenced using:
#define Counter_1_CounterUDB_sC8_counterdp_u0__F0_REG CYREG_B1_UDB09_F0
The register is mapped by this define to a specific F0 register in UDB09.
All this is described in the Component Author guide and covered in the training classes that TDU pointed you to.
You made a comment about PSoC Designer. That product is the development platform for PSoC 1 and PSoC Creator is the development platform for PSoC 3 and PSoC 5.
You describe wanting to do audio effects. That will be a challenge for the UDB datapaths. I would expect that those effects will require multiplies and more computation than is going to be possible with the datapaths. These sound like they may be a better fit for the Digital Filter Block (DFB). There are a lot of different possibilities for computation in PSoC. I have done a simple audio effect with the UDBs without CPU interaction. I implemented a USB to UDB to I2S flow for audio playout where the UDBs were used to control the volume. The CPU was just used to respond to a Capsense slider to input the volume desired and write a value to the datapath to control the scaling, but the CPU never touches the data. That is all moved via DMA. This is done using a multiply implemented using shifts and adds. So some processing can be done using the datapaths. It is certainly possible to scale and combine signals using the datapath. I don't know exactly what will be required to implement the effects that you desire.
You can also refer to my blog: www.cypress.com/go/psocsensei
It has some useful discussion of DMA and Datapaths.
- Brad Budlong
举报