FPGA上可以使用的开源USB-CDC 设备IP核 verilog源码分享-FPGA开源项目论坛-FPGA CPLD-ChipDebug

FPGA上可以使用的开源USB-CDC 设备IP核 verilog源码分享

该组件是一个简单的 USB 外设接口(设备)实现,枚举为高速 (480Mbit/s) 或全速 (12Mbit/s) CDC-ACM 设备。

该 IP 具有用于输入和输出数据的简单 FIFO 接口(有效、数据、接受),以及用于连接到 USB PHY 的 UTMI 接口。

特征
  • 高速或全速 USB CDC 设备。
  • 硬件枚举 – 无需软件干预。
  • UTMI PHY 接口(请参阅我的 UTMI 到 ULPI 转换包装器项目以允许连接到 ULPI PHY,例如 USB3300)
  • 具有握手功能的简单 8 位数据输入/输出接口(兼容 8 位宽 AXI4-Stream 接口)。
配置/要求(全速 (12Mbit/s))
  • 顶部:usb_cdc_core
  • 时钟:clk_i – 48MHz 或 60MHz
  • 复位:rst_i – 异步,高电平有效
  • VID/PID 可以在 usb_desc_rom.v 中更改
  • 参数:USB_SPEED_HS = “假”
配置/要求(高速 (480Mbit/s))
  • 顶部:usb_cdc_core
  • 时钟:clk_i – 60MHz
  • 复位:rst_i – 异步,高电平有效
  • VID/PID 可以在 usb_desc_rom.v 中更改
  • 参数:USB_SPEED_HS = “真”
限制
  • 真正基本的 USB-CDC 类设备实现,将忽略封装、线路状态和线路编码更改请求!
  • USB 挂起/恢复将无法正常工作。
测试

经过仿真验证,然后在 FPGA 上针对 Linux、Windows 和 MAC OS-X 进行测试。

FuseSoC 支持

USB CDC 可以使用 verilator 进行 linted,也可以使用 FuseSoC 通过 OpenLANE 制成 GDSII。快速 FuseSoC 说明

#install FuseSoC
pip3 install fusesoc

#Create and enter a new workspace
mkdir workspace && cd workspace

#Register usb cdc as a library in the workspace
fusesoc library add usb_cdc /path/to/core_usb_cdc
#...if repo is available locally or...
fusesoc library add usb_cdc https://github.com/ultraembedded/core_usb_cdc
#...to get the upstream repo

#To run linter
fusesoc run --target=lint ultraembedded:core:usb_cdc
#List all targets
fusesoc core show ultraembedded:core:usb_cdc

#Create a GDSII using a dockerized OpenLANE
#Requires the sky130 PDK and an Edalize launcher script
export PDK_ROOT=/path/to/sky130_pdk
export EDALIZE_LAUNCHER=/path/to/openlane_runner.py
fusesoc run --target=sky130 ultraembedded:core:usb_cdc
请登录后发表评论

    没有回复内容