跳转至

FAQ

修改了一些代码以后,为什么 VGA 不工作了?

VGA 不工作,常见的原因有:

  • 没有输出像素时钟 video_clk
  • 像素时钟与 VGA 时序不匹配,常见的原因是修改了 PLL 的设置,改了时钟频率,但是没有改 vga 的参数

因此如果需要 50MHz 以外的时钟频率,有两种办法实现:

  1. 在 PLL IP 设置中新增一个时钟输出,把这个时钟频率设置成自己想要的频率;需要解决跨时钟域的问题
  2. 把 VGA 时钟频率改成自己想要的时钟频率,把 VGA 的时钟同时用于其他逻辑;前提是要找到匹配的 VGA Timing,使得 Pixel Clock 是期望的时钟频率,然后相应地修改 vga 模块的参数。

SD 卡读取出的数据与预期结果不一致?

SD 卡读取的时候,不同 SD 卡的地址编码不一样:

  • SDSC 读取的地址单位是字节
  • SDHC 和 SDXC 读取的地址单位是扇区,每个扇区 512 字节

目前示例代码没有内置自动检测 SDSC 或 SDHC 的逻辑,如果想要实现,可以发送 CMD58 命令获取 CCS,如果 CCS 为 0 就是 SDSC,CCS 为 1 就是 SDHC 或 SDXC。可以从 SD 卡表面区分 SDSC/SDHC/SDXC。

如果使用 WinHex 工具来查看文件的地址,需要注意的是,默认显示的地址可能是相对于分区开头的,而不是 SD 卡开头。例如地址 0x00044000 对应逻辑扇区 544,但是分区前还有 32 个扇区,物理扇区号是 544+32=576,因此在读取 SD 卡的时候,应该要读取第 576 个扇区。这些数据在 WinHex 的右侧边栏中会显示。


最后更新: 2023年5月5日
作者:Jiajie Chen

评论