📄 doc.txt
字号:
debi.c:
InitDebi:
允许DEBI口,并且配置DEBI口。
Ave2kLoadDSPCode:
LoadDSPCode:
装载某一路DSP微码。
调用SeleteDSP使DSP片选线(CS)为低。仅对于早期单路卡才需要。这些卡使用GPIO1当作DSP的CS。对于后来硬件版本,PLD直接在访问DSP时自动产生片选信号。
调用InitDSPHpi初始化DSP的HPI口。通过写入HPI控制寄存器HPIC以清除中断并设置16位中高低位的顺序。参见TI文档。
逐字节将DSP微码写入。
逐字节将DSP微码读出校验。如比较有错则设置DSP装载错报告(ERR_LOADFAIL)。
将DSP内部存储器的0x7f写入0x80以启动DSP。
检查DSP中断,以确定DSP已正常运行。
读出DSP状态。检查是否为1,否则DSP未正常运行。
用Reset函数向微码发出软复位命令。
端口使用汇总:使用地址线4-7位进行解码。
版本A1及A0没有使用自定义扩展口。
0x00:通道0 DSP寄存器。
0x10:通道1 DSP寄存器。
0xE0:加密锁(LOCK)。在数据位4-7位写入5则激活整个PLD,写入其它数或上电时处于加锁状态。
0xF0:扩展口(EXPORT)。
第4位: 通道0复位。
第5位: 通道1复位。
第6位: M62429数据线。
第7位: M62429时钟线。
SetM62429Volume:设置M62429音量。
根据输入音量设置进行查表以确定写入数据。
手动产生数据和时钟信号将数据逐位写入,并产生结束锁存信号。
ResetDSP:对DSP芯片进行硬复位。
对于版本A1以下,GPIO2为DSP复位。
对于版本A2以上,扩展口为DSP复位。
WriteByte:输出数据至端口地址。
每次一个字节。实际上,7146每次会输出两个字节,只不过后一个没有写脉冲。这个特性为解决7146V4问题上提供了方便。7146DEBI口输出保持时间最小为负值,而DSP的HPI口要求有保持时间。这本来是一个设计上的疏忽,但7146V3版可能由于线电容较大,有一个额外的保持时间。但V4不再如此,DSP微码装载不能成功。解决方法是将输出的一个字节复制到高8位,使连续输出的两个字节相同,从而获得一个非常长的保持时间。
输出后,读任意寄存器若干次以产生一个短延时。程序中采用读MC1和MC2共三次。
ReadByte:从端口读一个字节数据。
读命令发出后,同样要等待一点时间以保证操作完成。
WriteWord和ReadWord:DSP16位操作。高低位顺序应与前面设置相同。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -