手把手一起开发SV4E-I3C设备(二)

JEDEC DDR5 SPD Hub Devices例程

DDR5生态系统的核心是SidebandBus Protocol

参考下图,可以将SV4E-I3C的端口1声明为主服务器(模拟主机控制器),并且它可以属于SV4E-I3C上的一个总线。端口2可以作为SPD Hub DUT的Local Bus侧的从站连接。这个从站可以被编程来模拟,端口2属于SV4E-I3C上的第二个总线,并且独立于端口1进行编程。SV4E-I3C的端口3和4也可以连接到SPD集线器的本地总线侧,它们可以用来模拟PMIC和/或RCD设备。这些端口属于SV4E-I3C上的同一第二条总线。这些端口的可用性为SPD Hub执行地址修改等功能提供了完整的覆盖范围。

在这里插入图片描述
图片来源《EN-W002E-E-21090-Component-Validation-of-JEDEC-DDR5-SPD-Hub-Devices》

以下所有例程,SV4E-I3C设备连接器件均为SPD5芯片,Reg表示MR寄存器,Mem表示NVM存储器

1、I2C模式读Reg

SV4E-I3C设备在i2c模式下读SPD5的Reg(MR寄存器),Python代码如下:

i3cDataCapture.start()
sidebandBusController.setup()
regAddr = 0x00
byte_num = 64
sidebandBusController.enableLowBitRateMode()
bytesFromTarget = sidebandBusController.spdLegacyReadReg('DIMM0-SPD', regAddr, numBytes = byte_num, twoByteAddressing=False)
for value in range(int(regAddr),int(byte_num+regAddr)):
	print("regAddr: 0x%02X mrbyte: 0x%02X" % (value, bytesFromTarget[(value-(int(regAddr)))]))
i3cDataCapture.stop()

Procedure区域编辑代码,点击Run运行,如图,LOG区域已经打印运行结果:

在这里插入图片描述
打开生成的波形结果,如图:

在这里插入图片描述

2、I3C模式读Reg

SV4E-I3C设备在i3c模式下读SPD5的Reg(MR寄存器),Python代码如下:

import dftm.svt as svt
i3cDataCapture.start()
sidebandBusController.setup()
regAddr = 0x00
byte_num = 64
sidebandBusController.enableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('SETAASA')
if status == True:
	svt.printMsg('SETAASA CCC PASS', 'green')
else:
	svt.printMsg('SETAASA CCC FAIL', 'red')
sidebandBusController.disableLowBitRateMode()
bytesFromTarget = sidebandBusController.spdReadReg('DIMM0-SPD', regAddr, numBytes = byte_num)
for value in range(int(regAddr),int(byte_num+regAddr)):
	print("regAddr: 0x%02X mrbyte: 0x%02X" % (value, bytesFromTarget[(value-(int(regAddr)))]))
status = sidebandBusController.doBroadcastWrite('RSTDAA')
if status == True:
	svt.printMsg('RSTDAA CCC PASS', 'green')
else:
	svt.printMsg('RSTDAA CCC FAIL', 'red')
i3cDataCapture.stop()

Procedure区域编辑代码,点击Run运行,LOG区域已经打印运行结果,如图所示:

在这里插入图片描述
打开生成的波形结果,如图:

在这里插入图片描述

3、使能ENEC+获取器件状态

3、4、5部分的工作主要是测试SV4E-I3C设备的PEC注错功能,PEC注错方式有多种,这里仅对sidebandBusController.startPecErrorInjection()进行测试,首先使能ENEC,但是pecEnable为False(如图sidebandBusController部分的参数设置),Python代码如下:

import dftm.svt as svt
i3cDataCapture.start()
sidebandBusController.setup()
sidebandBusController.initializeBus()
status = sidebandBusController.doBroadcastWrite('SETAASA')
if status == True:
	svt.printMsg('SETAASA CCC PASS', 'green')
else:
	svt.printMsg('SETAASA CCC FAIL', 'red')
sidebandBusController.disableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('ENEC', cccDefiningBytes = [0x01])
if status == True:
	svt.printMsg('ENEC CCC PASS', 'green')
else:
	svt.printMsg('ENEC CCC FAIL', 'red')
targetAddr = 'DIMM0-SPD'
regAddr = 0x0C
dataByte = 0x01 # one byte
status = sidebandBusController.spdWriteReg(targetAddr, regAddr, dataByte)
if status == True:
	svt.printMsg('spdWriteReg PASS', 'green')
else:
	svt.printMsg('spdWriteReg FAIL', 'red')
statusTuple = sidebandBusController.getTargetStatus('DIMM0-SPD')
if statusTuple is not None:
    (pecErr, protocolErr, pendingInterrupt) = statusTuple
	print("pecErr: 0x%02X protocolErr: 0x%02X pendingInterrupt: 0x%02X" % (pecErr, protocolErr, pendingInterrupt))
status = sidebandBusController.doBroadcastWrite('RSTDAA')
if status == True:
	svt.printMsg('RSTDAA CCC PASS', 'green')
else:
	svt.printMsg('RSTDAA CCC FAIL', 'red')    
i3cDataCapture.stop()

Procedure区域编辑代码,点击Run运行,如图:

在这里插入图片描述
打开生成的波形结果,如图:

在这里插入图片描述

4、使能ENEC+使能PEC+获取器件状态

接下来,pecEnable为True(如图sidebandBusController部分的参数设置),Python代码如下:

import dftm.svt as svt
i3cDataCapture.start()
sidebandBusController.setup()
sidebandBusController.initializeBus()
status = sidebandBusController.doBroadcastWrite('SETAASA')
if status == True:
	svt.printMsg('SETAASA CCC PASS', 'green')
else:
	svt.printMsg('SETAASA CCC FAIL', 'red')
sidebandBusController.disableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('ENEC', cccDefiningBytes = [0x01])
if status == True:
	svt.printMsg('ENEC CCC PASS', 'green')
else:
	svt.printMsg('ENEC CCC FAIL', 'red')
targetAddr = 'DIMM0-SPD'
regAddr = 0x0C
dataByte = 0x01 # one byte
status = sidebandBusController.spdWriteReg(targetAddr, regAddr, dataByte)
if status == True:
	svt.printMsg('spdWriteReg PASS', 'green')
else:
	svt.printMsg('spdWriteReg FAIL', 'red')
statusTuple = sidebandBusController.getTargetStatus('DIMM0-SPD')
if statusTuple is not None:
    (pecErr, protocolErr, pendingInterrupt) = statusTuple
	print("pecErr: 0x%02X protocolErr: 0x%02X pendingInterrupt: 0x%02X" % (pecErr, protocolErr, pendingInterrupt))
status = sidebandBusController.doBroadcastWrite('RSTDAA')
if status == True:
	svt.printMsg('RSTDAA CCC PASS', 'green')
else:
	svt.printMsg('RSTDAA CCC FAIL', 'red')    
i3cDataCapture.stop()

代码没有改变,点击Run运行,如图:

在这里插入图片描述
打开生成的波形结果,对比与刚刚生成的结果,由于使能PEC,故结果中包含pec byte:

在这里插入图片描述

5、使能ENEC+使能PEC+注入PEC错误+获取器件状态

然后开始注入PEC error,Python代码如下:

import dftm.svt as svt
i3cDataCapture.start()
sidebandBusController.setup()
sidebandBusController.initializeBus()
status = sidebandBusController.doBroadcastWrite('SETAASA')
if status == True:
	svt.printMsg('SETAASA CCC PASS', 'green')
else:
	svt.printMsg('SETAASA CCC FAIL', 'red')
sidebandBusController.disableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('ENEC', cccDefiningBytes = [0x01])
if status == True:
	svt.printMsg('ENEC CCC PASS', 'green')
else:
	svt.printMsg('ENEC CCC FAIL', 'red')
sidebandBusController.startPecErrorInjection()
targetAddr = 'DIMM0-SPD'
regAddr = 0x0C
dataByte = 0x01 # one byte
status = sidebandBusController.spdWriteReg(targetAddr, regAddr, dataByte)
if status == True:
	svt.printMsg('spdWriteReg PASS', 'green')
else:
	svt.printMsg('spdWriteReg FAIL', 'red')
sidebandBusController.stopPecErrorInjection()
statusTuple = sidebandBusController.getTargetStatus('DIMM0-SPD')
if statusTuple is not None:
    (pecErr, protocolErr, pendingInterrupt) = statusTuple
	print("pecErr: 0x%02X protocolErr: 0x%02X pendingInterrupt: 0x%02X" % (pecErr, protocolErr, pendingInterrupt))
status = sidebandBusController.doBroadcastWrite('RSTDAA')
if status == True:
	svt.printMsg('RSTDAA CCC PASS', 'green')
else:
	svt.printMsg('RSTDAA CCC FAIL', 'red')    
i3cDataCapture.stop()

Procedure区域编辑代码,点击Run运行,如图,LOG区域已经打印运行结果:

在这里插入图片描述
打开生成的波形结果,如图,在写Reg时注入错误的PEC byte:

在这里插入图片描述
ibi payload自动完成,如图所示:

在这里插入图片描述

6、使能ENEC+未注入parity错误+获取器件状态

6、7部分的工作主要是测试SV4E-I3C设备的parity注错功能,这里对sidebandBusController.startErrorInjection(errorSpecs)进行测试,首先是未进行parity注错,Python代码如下:

import dftm.svt as svt
i3cDataCapture.start()
sidebandBusController.setup()
sidebandBusController.enableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('SETAASA')
if status == True:
	svt.printMsg('SETAASA CCC PASS', 'green')
else:
	svt.printMsg('SETAASA CCC FAIL', 'red')
sidebandBusController.disableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('ENEC', cccDefiningBytes = [0x01])
if status == True:
	svt.printMsg('ENEC CCC PASS', 'green')
else:
	svt.printMsg('ENEC CCC FAIL', 'red')
bytesFromTarget = sidebandBusController.spdWriteReg('DIMM0-SPD', 0x00,0x00)
statusTuple = sidebandBusController.getTargetStatus('DIMM0-SPD')
if statusTuple is not None:
    (pecErr, protocolErr, pendingInterrupt) = statusTuple
	print("pecErr: 0x%02X protocolErr: 0x%02X pendingInterrupt: 0x%02X" % (pecErr, protocolErr, pendingInterrupt))
status = sidebandBusController.doBroadcastWrite('RSTDAA')
if status == True:
	svt.printMsg('RSTDAA CCC PASS', 'green')
else:
	svt.printMsg('RSTDAA CCC FAIL', 'red')
i3cDataCapture.stop()

Procedure区域编辑代码,点击Run运行,如图,LOG区域已经打印运行结果:

在这里插入图片描述
打开生成的波形结果,如图:

在这里插入图片描述

7、使能ENEC+注入parity错误+获取器件状态

注入parity错误,Python代码如下:

import dftm.svt as svt
i3cDataCapture.start()
sidebandBusController.setup()
sidebandBusController.enableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('SETAASA')
if status == True:
	svt.printMsg('SETAASA CCC PASS', 'green')
else:
	svt.printMsg('SETAASA CCC FAIL', 'red')
sidebandBusController.disableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('ENEC', cccDefiningBytes = [0x01])
if status == True:
	svt.printMsg('ENEC CCC PASS', 'green')
else:
	svt.printMsg('ENEC CCC FAIL', 'red')
errorSpecs = [ (2, 3) ]
sidebandBusController.startErrorInjection(errorSpecs)
bytesFromTarget = sidebandBusController.spdWriteReg('DIMM0-SPD', 0x00,0x00)
sidebandBusController.stopErrorInjection()
statusTuple = sidebandBusController.getTargetStatus('DIMM0-SPD')
if statusTuple is not None:
    (pecErr, protocolErr, pendingInterrupt) = statusTuple
	print("pecErr: 0x%02X protocolErr: 0x%02X pendingInterrupt: 0x%02X" % (pecErr, protocolErr, pendingInterrupt))
status = sidebandBusController.doBroadcastWrite('RSTDAA')
if status == True:
	svt.printMsg('RSTDAA CCC PASS', 'green')
else:
	svt.printMsg('RSTDAA CCC FAIL', 'red')
i3cDataCapture.stop()

Procedure区域编辑代码,点击Run运行,如图:

在这里插入图片描述
打开生成的波形结果,如图,写Reg注入parity error,ibi payload自动完成:

在这里插入图片描述

8、使能ENEC+注入parity错误+读Reg+ibiResponse(ackAndDisable)+获取器件状态

8、9部分的工作主要是测试SV4E-I3C设备的ibiResponse设置,首先controllerParams部分ibiResponse设置为ackAndDisable,Python代码如下:

import dftm.svt as svt
i3cDataCapture.start()
sidebandBusController.setup()
sidebandBusController.enableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('SETAASA')
if status == True:
	svt.printMsg('SETAASA CCC PASS', 'green')
else:
	svt.printMsg('SETAASA CCC FAIL', 'red')
sidebandBusController.disableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('ENEC', cccDefiningBytes = [0x01])
if status == True:
	svt.printMsg('ENEC CCC PASS', 'green')
else:
	svt.printMsg('ENEC CCC FAIL', 'red')
errorSpecs = [ (2, 3) ]
sidebandBusController.startErrorInjection(errorSpecs)
bytesFromTarget = sidebandBusController.spdWriteReg('DIMM0-SPD', 0x00,0x00)
sidebandBusController.stopErrorInjection()
bytesFromTarget = sidebandBusController.spdReadReg('DIMM0-SPD', 0x30, numBytes = 5)
for value in range(int(0x30),int(5+0x30)):
	print("regAddr: 0x%02X mrbyte: 0x%02X" % (value, bytesFromTarget[(value-(int(0x30)))]))
statusTuple = sidebandBusController.getTargetStatus('DIMM0-SPD')
if statusTuple is not None:
    (pecErr, protocolErr, pendingInterrupt) = statusTuple
	print("pecErr: 0x%02X protocolErr: 0x%02X pendingInterrupt: 0x%02X" % (pecErr, protocolErr, pendingInterrupt))
status = sidebandBusController.doBroadcastWrite('RSTDAA')
if status == True:
	svt.printMsg('RSTDAA CCC PASS', 'green')
else:
	svt.printMsg('RSTDAA CCC FAIL', 'red')
i3cDataCapture.stop()

Procedure区域编辑代码,点击Run运行,如图,LOG区域已经打印运行结果:

在这里插入图片描述
打开生成的波形结果,如图,注意与下个波形结果进行对比:

在这里插入图片描述

9、使能ENEC+注入parity错误+读Reg+ibiResponse(ackAndProceed)+获取器件状态

controllerParams部分ibiResponse设置为ackAndProceed,Python代码未改变,如下:

import dftm.svt as svt
i3cDataCapture.start()
sidebandBusController.setup()
sidebandBusController.enableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('SETAASA')
if status == True:
	svt.printMsg('SETAASA CCC PASS', 'green')
else:
	svt.printMsg('SETAASA CCC FAIL', 'red')
sidebandBusController.disableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('ENEC', cccDefiningBytes = [0x01])
if status == True:
	svt.printMsg('ENEC CCC PASS', 'green')
else:
	svt.printMsg('ENEC CCC FAIL', 'red')
errorSpecs = [ (2, 3) ]
sidebandBusController.startErrorInjection(errorSpecs)
bytesFromTarget = sidebandBusController.spdWriteReg('DIMM0-SPD', 0x00,0x00)
sidebandBusController.stopErrorInjection()
bytesFromTarget = sidebandBusController.spdReadReg('DIMM0-SPD', 0x30, numBytes = 5)
for value in range(int(0x30),int(5+0x30)):
	print("regAddr: 0x%02X mrbyte: 0x%02X" % (value, bytesFromTarget[(value-(int(0x30)))]))
statusTuple = sidebandBusController.getTargetStatus('DIMM0-SPD')
if statusTuple is not None:
    (pecErr, protocolErr, pendingInterrupt) = statusTuple
	print("pecErr: 0x%02X protocolErr: 0x%02X pendingInterrupt: 0x%02X" % (pecErr, protocolErr, pendingInterrupt))
status = sidebandBusController.doBroadcastWrite('RSTDAA')
if status == True:
	svt.printMsg('RSTDAA CCC PASS', 'green')
else:
	svt.printMsg('RSTDAA CCC FAIL', 'red')
i3cDataCapture.stop()

点击Run运行,如图:

在这里插入图片描述
打开生成的波形结果,如图:

在这里插入图片描述

10、I2C模式写Reg

SV4E-I3C设备在i2c模式下写SPD5的Reg(MR寄存器),Python代码如下:

import dftm.svt as svt
i3cDataCapture.start()
sidebandBusController.setup()
regAddr = 0x00
dataByte = 0x00
sidebandBusController.enableLowBitRateMode()
status = sidebandBusController.spdLegacyWriteReg('DIMM0-SPD', regAddr, dataByte, twoByteAddressing=False)
if status == True:
	svt.printMsg('spdLegacyWriteReg PASS', 'green')
else:
	svt.printMsg('spdLegacyWriteReg FAIL', 'red')
i3cDataCapture.stop()

Procedure区域编辑代码,点击Run运行,如图:

在这里插入图片描述
打开生成的波形结果,如图:

在这里插入图片描述

11、I2C模式写Mem

SV4E-I3C设备在i2c模式下写SPD5的Mem(NVM寄存器),Python代码如下:

import dftm.svt as svt
i3cDataCapture.start()
sidebandBusController.setup()
sidebandBusController.enableLowBitRateMode()
memBlock = 0x00
data16Bytes = []
for datanum in range(16):
    data16Bytes.append(0xFF)
for block in range(16):
    for addr in range(4):
        status = sidebandBusController.spdLegacyWriteMem('DIMM0-SPD', memBlock, 0x00, data16Bytes)
        if status == True:
			print("memBlock: %d  write 0x%02X PASS" % (block,data16Bytes[0]))
        else:
			print("memBlock: %d  write 0x%02X FAIL" % (block,data16Bytes[0]))
memBlock = memBlock + 1
i3cDataCapture.stop()

Procedure区域编辑代码,点击Run运行,如图,LOG区域已经打印运行结果:

在这里插入图片描述
打开生成的波形结果,如图:

在这里插入图片描述

12、I2C模式读Mem

SV4E-I3C设备在i2c模式下读SPD5的Mem(NVM寄存器),Python代码如下:

import dftm.svt as svt
i3cDataCapture.start()
sidebandBusController.setup()
sidebandBusController.enableLowBitRateMode()
memBlock = 0x00
for block in range(16):
bytesFromTarget = sidebandBusController.spdLegacyReadMem('DIMM0-SPD', memBlock, 0x00, numBytes = 64, twoByteAddressing=False)
    for value in range(64):
		print("memBlock: %d memAddr: 0x%02X mrbyte: 0x%02X" % (block, value, bytesFromTarget[value]))
memBlock = memBlock + 1
i3cDataCapture.stop()

Procedure区域编辑代码,点击Run运行,如图,LOG区域已经打印运行结果:

在这里插入图片描述

打开生成的波形结果,如图:

在这里插入图片描述

13、I3C模式读Reg

SV4E-I3C设备在i3c模式下读SPD5的Reg(MR寄存器),Python代码如下:

import dftm.svt as svt
i3cDataCapture.start()
sidebandBusController.setup()
regAddr = 0x00
byte_num = 64
sidebandBusController.enableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('SETAASA')
if status == True:
	svt.printMsg('SETAASA CCC PASS', 'green')
else:
	svt.printMsg('SETAASA CCC FAIL', 'red')
sidebandBusController.disableLowBitRateMode()
bytesFromTarget = sidebandBusController.spdReadReg('DIMM0-SPD', regAddr, numBytes = byte_num)
for value in range(int(regAddr),int(byte_num+regAddr)):
	print("regAddr: 0x%02X mrbyte: 0x%02X" % (value, bytesFromTarget[(value-(int(regAddr)))]))
status = sidebandBusController.doBroadcastWrite('RSTDAA')
if status == True:
	svt.printMsg('RSTDAA CCC PASS', 'green')
else:
	svt.printMsg('RSTDAA CCC FAIL', 'red')
i3cDataCapture.stop()

Procedure区域编辑代码,点击Run运行,如图,LOG区域已经打印运行结果:

在这里插入图片描述
打开生成的波形结果,如图:

在这里插入图片描述

14、I3C模式写Reg

SV4E-I3C设备在i3c模式下写SPD5的Reg(MR寄存器),Python代码如下:

import dftm.svt as svt
i3cDataCapture.start()
sidebandBusController.setup()
sidebandBusController.enableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('SETAASA')
if status == True:
	svt.printMsg('SETAASA CCC PASS', 'green')
else:
	svt.printMsg('SETAASA CCC FAIL', 'red')
sidebandBusController.disableLowBitRateMode()
regAddr = 0x00
dataByte = 0x00
status = sidebandBusController.spdWriteReg('DIMM0-SPD', regAddr, dataByte)
if status == True:
	svt.printMsg('spdWriteReg PASS', 'green')
else:
	svt.printMsg('spdWriteReg FAIL', 'red')
status = sidebandBusController.doBroadcastWrite('RSTDAA')
if status == True:
	svt.printMsg('RSTDAA CCC PASS', 'green')
else:
	svt.printMsg('RSTDAA CCC FAIL', 'red')
i3cDataCapture.stop()

Procedure区域编辑代码,点击Run运行,如图,LOG区域已经打印运行结果:

在这里插入图片描述

打开生成的波形结果,如图:

在这里插入图片描述

15、I3C模式写Mem

SV4E-I3C设备在i3c模式下写SPD5的Mem(NVM寄存器),Python代码如下:

import dftm.svt as svt
i3cDataCapture.start()
sidebandBusController.setup()
sidebandBusController.enableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('SETAASA')
if status == True:
	svt.printMsg('SETAASA CCC PASS', 'green')
else:
	svt.printMsg('SETAASA CCC FAIL', 'red')
sidebandBusController.disableLowBitRateMode()
memBlock = 0x00
data16Bytes = []
for datanum in range(16):
    data16Bytes.append(0xFF)
for block in range(16):
    for addr in range(4):
        status = sidebandBusController.spdWriteMem('DIMM0-SPD', memBlock, 0x00, data16Bytes)
        if status == True:
			print("memBlock: %d  write 0x%02X PASS" % (block,data16Bytes[0]))
        else:
			print("memBlock: %d  write 0x%02X FAIL" % (block,data16Bytes[0]))
memBlock = memBlock + 1
status = sidebandBusController.doBroadcastWrite('RSTDAA')
if status == True:
	svt.printMsg('RSTDAA CCC PASS', 'green')
else:
	svt.printMsg('RSTDAA CCC FAIL', 'red')
i3cDataCapture.stop()

Procedure区域编辑代码,点击Run运行,如图,LOG区域已经打印运行结果:

在这里插入图片描述

打开生成的波形结果,如图:

在这里插入图片描述

16、I3C模式读Mem

SV4E-I3C设备在i3c模式下读SPD5的Mem(NVM寄存器),Python代码如下:

import dftm.svt as svt
i3cDataCapture.start()
sidebandBusController.setup()
sidebandBusController.enableLowBitRateMode()
status = sidebandBusController.doBroadcastWrite('SETAASA')
if status == True:
svt.printMsg('SETAASA CCC PASS', 'green')
else:
svt.printMsg('SETAASA CCC FAIL', 'red')
sidebandBusController.disableLowBitRateMode()
memBlock = 0x00
for block in range(16):
bytesFromTarget = sidebandBusController.spdReadMem('DIMM0-SPD', memBlock, 0x00, numBytes = 64)
    for value in range(64):
print("memBlock: %d memAddr: 0x%02X mrbyte: 0x%02X" % (block, value, bytesFromTarget[value]))
memBlock = memBlock + 1
status = sidebandBusController.doBroadcastWrite('RSTDAA')
if status == True:
svt.printMsg('RSTDAA CCC PASS', 'green')
else:
svt.printMsg('RSTDAA CCC FAIL', 'red')
i3cDataCapture.stop()

Procedure区域编辑代码,点击Run运行,如图,LOG区域已经打印运行结果:

在这里插入图片描述

打开生成的波形结果,如图:

在这里插入图片描述
上述程序可能存在少量错误和可优化的地方,后续博文将进行修改和优化

希望本文对大家有帮助,上文若有不妥之处,欢迎指正

分享决定高度,学习拉开差距

  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 学习DSP(数字信号处理)是一个复杂又有趣的过程,有许多资源可供选择。而其中一种资源是基于TMS320C55x的光盘资料,可以帮助你逐步学习和掌握DSP的技能。下面是我对使用这种资料进行学习的建议: 首先,确保你具备一定的数学基础,特别是在信号处理和算法方面。这将帮助你更好地理解DSP的原理和算法。 光盘资料通常提供了一个系统的学习路径,从基础知识开始逐步深入。按照这样的顺序进行学习可以确保你不会遗漏任何重要的概念。 光盘通常提供了一些示例代码以及对应的解释。通过仔细阅读和理解这些代码,你可以学习到如何使用TMS320C55x的指令集和工具来实现各种信号处理算法。 尝试自己编写一些简单的代码来实现光盘资料中的示例算法。通过自己动手实践,你能更好地掌握这些概念和技能。 如果你遇到困难或者有任何疑问,不要犹豫,寻求帮助。你可以通过光盘资料提供的论坛或者社区向其他学习者和专业人士请教。此外,还可以参考其他书籍、教程和在线资源,进一步加深理解。 最后,保持耐心和坚持。学习DSP需要时间和努力,不要轻易放弃。通过光盘资料和其他学习资源,你会逐渐掌握TMS320C55x的使用和DSP的核心概念。 总之,通过使用基于TMS320C55x的光盘资料,你可以以系统和有序的方式学习DSP。遵循资料提供的学习路径,尝试编写代码,寻求帮助,并保持耐心和坚持,你将能够掌握这一令人激动的技能。 ### 回答2: 学习DSP (数字信号处理) 需要具备一定的理论基础和实践经验。借助光盘资料上提供的基于TMS320C55x的教学内容,我将简要介绍手把手学习DSP的步骤和过程。 首先,根据光盘资料提供的教学介绍,了解TMS320C55x的基本原理和架构。该芯片是一种高性能的DSP处理器,具有出色的运算能力和多媒体处理功能。理解其体系结构以及寄存器结构是学习的第一步。 接下来,光盘资料上会提供一些示例代码和实验项目。这些代码和项目是基于TMS320C55x的典型应用案例,可以帮助我们更好地理解和巩固所学知识。通过仔细分析这些代码和项目,我们可以学习如何设计和实现DSP算法。 然后,我们可以开始手动编写程序。光盘资料上应该会提供编程工具和开发环境。使用这些工具和环境,我们可以编写和调试自己的DSP程序。在此过程中,需要逐步学习DSP算法和优化技巧,以提高程序的性能和效率。 此外,光盘资料上可能还包含一些实验指导。通过这些实验,我们可以通过实际操作来加深对DSP原理和应用的理解。在实验过程中,要注意记录和分析实验结果,从而不断优化和改进自己的程序。 最后,持续学习和实践是掌握DSP的关键。光盘资料可能不会涵盖所有的内容,因此我们需要通过阅读教材、参考资料和在线资源来持续学习。同时,通过自己的实践和项目经验,我们可以掌握更深入的DSP知识和技能。 总之,学习DSP是一个逐步深入的过程,只有通过理论学习和实践经验的结合,才能真正掌握这一领域的知识和技能。光盘资料提供了一个全面而系统的学习框架,但我们自身的努力和坚持才是学习成功的关键。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲁棒最小二乘支持向量机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值