不同的器件编程指南使用原始命令语法来修改寄存器。 此命令语法及其参数的详细说明是什么?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
编程指南命令语法使用特定格式更改器件寄存器。 下面的说明进行介绍
详细介绍了如何完成此操作。
本质上、有两种方法可更改器件寄存器设置:
a)。 读取/修改写入操作
b)。 只写操作
a)。 让我们首先讨论读取/修改写入操作:
例如、以下寄存器设置选择器件寄存器0xFF 和0x69的特定部分、然后进行修改
寄存器中的位。 为了清楚说明这一点、让我们回顾以下几个示例:
原始 FF 05 07 //更改0xFF[2:0]=101’b
原始69 10 30 //更改0x69[5:4]=01'b
RAW:标识寄存器操作
0xFF 或0x69:指示需要更改的寄存器地址
0x05或0x01:使用下一个操作数的屏蔽表示寄存器内容的变化。
0x07或0x30:表示需要更改的屏蔽或寄存器位。
例如、MASK = 0x07表明需要更改寄存器0xFF 的位2到位0。 出于同样的原因、
0x30的屏蔽表示寄存器0x69的位5到位4将被改变。
现在我们已经很好地了解了命令语法、接下来让我们更深入地了解如何实现这一点。
原始命令语法使用读取/修改格式。 此命令执行三个差分运算:
1)。 首先、我们读取寄存器0xFF 或0x69的内容。
2)。 根据需要使用掩码来更改寄存器设置。
3)。 最后、写回更改后的值。
例如、RAW FF 05 07意味着我们必须执行以下操作:
1)。 读取寄存器0xFF 的内容。 例如、假设我们读回0x04的值
2)。 由于屏蔽为0x07、FPGA 或微控制器保留位7至3并与更改的位2至0串联。
在我们的示例中、由于我们回读0x04、这意味着在位操作后、我们将具有0x05。
3)。 回写该值。 在本示例中、我们将把0x05写回寄存器0xFF。 寄存器0x69或其他寄存器也采用相同的过程。
b)。 只写操作:
接下来、我们将讨论如何使用只写操作更改寄存器设置。
与之前的方法不同、我们使用单个写入命令来根据更改更新寄存器。 但是、鉴于存在某些情况
寄存器中保留位的位我们必须保留这些位、并且只需进行更改即可更新寄存器位
进行的。 很明显、让我们使用前面使用的两个示例:
原始 FF 05 07 //更改0xFF[2:0]=101’b
原始69 10 30 //更改0x69[5:4]=01'b
语法/含义与前面提到的相同。 因为我们需要更改寄存器0xFF[2:0]和
仅限寄存器0x69[5:4]、我们应保留位0xFF[7:3]、0x69[7:6]和0x69[3:0]。 现在、问题是
如何知道这些位的默认设置或寄存器设置是什么? 有两种方法:
1)。 在开发过程中、读取寄存器内容、然后更改仅需要的寄存器位。
2)。 请参阅编程指南并注意默认设置、然后根据需要更改位。
例如、读取 LMH1297编程指南可分别为寄存器0xFF 和0x69指定0x00和0x10的值。
因此、我们可以执行单次写入、并直接设置寄存器0xFF = 0x05和0x69=0x10。
注:如果寄存器中没有保留或动态位、则可以执行直接写入操作。
总之、有两种方法可以修改寄存器内容:
读取/修改写入:
在本例中、对于每个原始操作、我们需要执行三个操作:
1)。 使用 FPGA 或微控制器从器件读取寄存器值
2)。 使用 FPGA 或微控制器根据掩码设置更改寄存器值
3)。 最后将该值写回器件寄存器
直接写入操作:
此方法直接从器件或编程指南中读取寄存器内容。 然后、我们只修改寄存器位
在 FPGA 或微控制器端根据需要写回该值。 请注意、如果是、则可以使用此方法
寄存器没有动态或保留位。 请参阅编程指南器件寄存器表
以了解有关每个寄存器和位定义的详细信息。