关于 My4TH 的一些试验(三):更快的运行速度

工作在 20MHz 和 22.1184MHz

试验表明,使用 74HC 系列逻辑电路和 AM27H256-45/35DC,把电源电压提高到 5.2V,系统就可以稳定工作在 20MHz(使用原作者提供的 10MHz ROM 镜像文件,波特率 9600)。

电源电压进一步提高到 5.4V,下面的配置可以让系统工作在 22.1184MHz:

U2 U3 U4 U9 U15 U16 其他
74F161A(TI)/ 74AC161(TI) 74LVC541A(TI) 74ACT08/ 74LVC08 AM27H256-45/35DC (需筛选) IS61C256AL-12T(L)I/ CY7C199(L)-15ZC 74HC系列

更高的波特率

通过调整串口操作子例程中的延迟,系统在 16MHz 以上可以工作在 14400 波特率,在 22.1184MHz 可以工作在 19200 波特率。

这里可以下载修改后的固件和工具。这一版本包含的改进如下:

  • 2025-01-19 更新:按标准将 M*/ 改为使用 3 个单元的中间结果;为方便装入程序,增加 FH--> 两个词(详见 Thinking Forth 第五章)
  • 2025-01-13 更新:修复 14400/19200 波特率下 uart_recv 的一个 bug

固件:

  • 改进的 EEPROM 搜索:相邻的块位于同一片 EEPROM 上(建议使用 24xx1026/BR24G1MFJ/M24M01),便于使用外接的 EEPROM 卡
  • 更快的 UART 波特率:16MHz 以上可用 14400,22.1184MHz 可用 19200
  • 为了提高性能,尽可能使用 NFD 扩展中的 PLD/PHD 指令操作数据栈
  • 改进 tab_opcode,使 BLOAD 的二进制模块可以使用 NFD 扩展指令
  • PARSEWORDADDRESS-UNIT-BITS 进行小改进,使它们符合 Forth 2012 标准
  • 增加 CH453 键盘和 PCA9557 I2C LCD4004 屏幕驱动(本系列中后面会详细介绍)
  • 为 Ctrl 组合键修改按键代码
  • 改进 LIST,使其可以与其他 I2C 外设共同工作
  • 改进 LISTDUMPWORDS,在 LCD 屏幕上显示时可以每页暂停
  • 增加词 COLD 用于在终端中复位系统
  • 按惯例,将 EDITLIST 的行号更改为 0..15(从 0 开始)

用于 LCD 屏幕的 EDIT 实用程序(m4-lcd-edit.bin)增加了如下功能:

  • Shift+Up: 向上 4 行
  • Shift+Down: 向下 4 行
  • Shift+Left: 回到行首
  • Shift+Right: 去行尾
  • Ctrl+Enter: 在当前行后插入一行
  • Shift+Enter: 断开当前行(光标之后内容另起一行)
  • Ctrl+C: 复制当前行
  • Ctrl+K: 删除(剪切)当前行
  • Ctrl+U: 反删除(粘贴)一行
  • Ctrl+Space: 清除当前行
  • Ctrl+Backspace: 将当前行与上一行合并

my4th-tool:

  • 传输数据和模拟时可以设定波特率

22.1184MHz 下的稳定性测试

注意在 22.1184MHz 时,不是所有的 EPROM 都可以稳定工作。建议将 EPROM 放在恒温在 45°C 的加热板上,等几分钟使温度达到平衡后,进行如下测试:

EPROM test bench

EPROM on heating plate

测试 1,输出应为 -1000:

: test1 0 1000 0 do 1 2 u< + loop . ;	\ 输出应为 -1000

测试 2,输出应符合预期,不死机:

: test 1000 . ;↵  ok
test↵ 1000  ok
: test 5000 . ;↵  ok
test↵ 5000  ok
forget test↵  ok
test↵ 1000  ok
forget test↵  ok
test↵  ? unknown word test

测试 3,输出应符合预期,不死机:

: + 0. parse-name >number 2drop d>s + ;↵  ok
3 + 4 + 5 . 12

如果不能通过测试,可以采取如下方法之一:

  • 略微提高电源电压 0.05~0.1V(建议不要超过 5.5V);
  • 更换 EPROM;
  • 降低考核温度到 40°C(在室温下也能稳定工作,只是余量没有那么足)。

大部分 AM27H256-35/45DC 都能在 45°C 稳定工作。但大部分 AM27H256-45DC 都不能在 45°C 稳定工作。降低考核温度到 40°C,部分 AM27H256-45DC 可以工作。1

三种改进的贴片版

Some SMT Versions


  1. 之前的版本在 uart_recv 中存在一个 bug(PSH R0 包含在了等待起始位的循环中)。温度对时序的影响会触发这一 bug,导致压栈的内容未完整弹出。修复这一 bug 后,能稳定工作的 EPROM 数量增多了。——2025-01-13 ↩︎