Lattice ECP5 UART,终端模拟器上没有信号



我完全遵循了本教程,但我将详细解释我到底采取了哪些步骤。我有一个ECP5评估85k板。

  1. 我焊接了R34/R35(RX/TX(和R21上的桥接器(将LED D1连接到RXD(
  2. 我使用windows安装来运行最新版本的FT_PROG。在FT_PROG中,我转到FT_EEPROM->硬件特定->端口B->硬件并将其设置为RS232并点击程序。按照软件要求成功完成
  3. 然后我将USB端口转发到我的虚拟箱linux机器。它可以识别主板,我可以成功地在上面运行verilog文件
  4. 我跑了/raw_serial.shraw_serial.v上传到我的板上,该板应该重复将A打印到串行监视器
  5. 然后我在/dev/ttyUSB1上打开了minicom,它可以识别设备,baudrate设置正确
  6. 然后我尝试使用cu如下:sudo chmod 666 /dev/ttyUSB1 && sudo cu -l /dev/ttyUSB2 -s 115200。它打开一个终端并表示它已连接

Led D1亮起,两个终端程序都指示连接成功(当然,我一次尝试其中一个(。屏幕上没有打印任何内容。当我使用minicom并重新部署raw_serial.vsome<gt;标志被打印到屏幕上,但仅此而已。我试着打开和关闭回声,但似乎什么都不起作用。

以下内容对我有效,可能对其他人也有效。我假设你在使用openocd。

  1. 不要在windows中使用FT_PROG,它似乎并没有真正闪存FTDI芯片。然而,它可以让您读回本应闪存到芯片的十六进制转储。开箱时未更改EEPROM的十六进制转储如下:

    00000000  01 08 03 04 10 60 00 07 C0 FA 08 00 11 11 9A 10  .....`..Àú....š.
    00000010  AA 3C E6 12 00 00 00 00 56 00 00 00 00 00 00 00  ª<æ.....V.......
    00000020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00000030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00000040  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00000050  00 00 00 00 00 00 02 03 00 00 00 00 00 00 00 00  ................
    00000060  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00000070  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00000080  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00000090  00 00 00 00 00 00 00 00 00 00 10 03 4C 00 61 00  ............L.a.
    000000A0  74 00 74 00 69 00 63 00 65 00 3C 03 4C 00 61 00  t.t.i.c.e.<.L.a.
    000000B0  74 00 74 00 69 00 63 00 65 00 20 00 45 00 43 00  t.t.i.c.e. .E.C.
    000000C0  50 00 35 00 20 00 45 00 76 00 61 00 6C 00 75 00  P.5. .E.v.a.l.u.
    000000D0  61 00 74 00 69 00 6F 00 6E 00 20 00 42 00 6F 00  a.t.i.o.n. .B.o.
    000000E0  61 00 72 00 64 00 12 03 46 00 54 00 32 00 55 00  a.r.d...F.T.2.U.
    000000F0  59 00 54 00 4A 00 56 00 00 00 00 00 00 00 FC 27  Y.T.J.V.......ü'
    

    我只是把这个贴在这里供将来参考,我们不会使用股票eeprom。

  2. 我们需要将eeprom闪存到RS232-HS模式。要做到这一点,我们必须首先相应地更改eeprom的十六进制转储。要将通道B置于RS232-HS模式,我们需要将最后一行的最后一列从'更改为|。创建一个名为eeprom_RS232.bin的十六进制文件,其中包含以下内容:

    00000000  01 08 03 04 10 60 00 07 C0 FA 08 00 11 11 9A 10  .....`..Àú....š.
    00000010  AA 3C E6 12 00 00 00 00 56 00 00 00 00 00 00 00  ª<æ.....V.......
    00000020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00000030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00000040  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00000050  00 00 00 00 00 00 02 03 00 00 00 00 00 00 00 00  ................
    00000060  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00000070  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00000080  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00000090  00 00 00 00 00 00 00 00 00 00 10 03 4C 00 61 00  ............L.a.
    000000A0  74 00 74 00 69 00 63 00 65 00 3C 03 4C 00 61 00  t.t.i.c.e.<.L.a.
    000000B0  74 00 74 00 69 00 63 00 65 00 20 00 45 00 43 00  t.t.i.c.e. .E.C.
    000000C0  50 00 35 00 20 00 45 00 76 00 61 00 6C 00 75 00  P.5. .E.v.a.l.u.
    000000D0  61 00 74 00 69 00 6F 00 6E 00 20 00 42 00 6F 00  a.t.i.o.n. .B.o.
    000000E0  61 00 72 00 64 00 12 03 46 00 54 00 32 00 55 00  a.r.d...F.T.2.U.
    000000F0  59 00 54 00 4A 00 56 00 00 00 00 00 00 00 FC 27  Y.T.J.V.......ü|
    

    现在,我们需要使用Anton的方法将这个eeprom闪存到ECP5。为此,首先创建一个文件ftdi_RS232.conf,其中包含以下内容:

    vendor_id=0x403
    product_id=0x6010
    filename="eeprom_RS232.bin"
    flash_raw=true
    

    使用以下命令,我们可以闪烁到ECP5:ftdi_eeprom --flash-eeprom ftdi_RS232.conf。如果我们想恢复到股票eeprom,我们可以很容易地用步骤1中给出的十六进制转储重复这个方法。

  3. 现在是时候刷新verilog文件了。然而,ECP5的设备描述已从Lattice ECP5评估板更改为Dual RS232-HS。我们需要告诉openocd去寻找那个特定的设备。首先创建一个包含以下内容的文件ecp5.cfg

    # this supports ECP5 Evaluation Board
    interface ftdi
    ftdi_device_desc "Dual RS232-HS"
    ftdi_vid_pid 0x0403 0x6010
    # channel 1 does not have any functionality
    ftdi_channel 0
    # just TCK TDI TDO TMS, no reset
    ftdi_layout_init 0xfff8 0xfffb
    reset_config none
    # default speed
    adapter_khz 5000
    # ECP5 device - LFE5UM5G-85F
    jtag newtap ecp5 tap -irlen 8 -expected-id 0x81113043
    

    然后,像往常一样创建svf文件,并使用以下命令进行闪存:

    sudo --preserve-env=PATH env openocd -f ./ecp5.cfg -c "transport select jtag; init; svf raw_serial.svf; exit"
    
  4. 最后,我们可以打开一个端子来读取ECP5的串行输出。就我个人而言,我喜欢使用minicom:sudo chmod 666 /dev/ttyUSB0 && minicom -D /dev/ttyUSB0

  5. raw_serial.v示例的另一个问题是,它没有像自述文件所建议的那样使用115200的波特率,而是使用19200的波特率。连接到FTDI芯片的时钟运行频率为12 MHz。如果你想要115200的包,你需要每1200000/115200 ~=104次发送一个比特。这意味着您需要将第14行更改为if (counter == 104) begin

最新更新