
|
非常感谢电子发烧友和AGM提供的这次测评机会。之前也了解过AGM家的MCU+FPGA,觉得肯定很强大,但是一直没有机会使用到。这次终于有机会了。 项目计划本次测评计划基于AG32开发板设计一个简易的逻辑分析仪,具体如下:
开发板简介本次测评的板卡为AG32 demo V2,并且提供了一个AGM专用的DAP LINK。 AG32 demo V2板卡上板载了一颗AG32VF407VGT6芯片,它是国产唯一的异构双核(RISC-V+FPGA)处理器,包含2K逻辑单元。最大CPU速度为248 MHz,具有128KB的SRAM和1MB的FLASH,支持浮点运算,包含 1个CAN2.0, 5个UART, 2个I2C;支持SDIO、以太网MAC;支持USB FS+OTG;具有3个12位、最高3M SPS ADC(16通道)、2个DAC。具体参数如下:
该芯片具有多种用法,既可以独立当做CPLD/FPGA使用(无需开启MCU,MCU处于静默状态);也可以独立当做MCU使用,与STM32管脚兼容(无需开启CPLD/FPGA,CPLD/FPGA处于静默状态);还可以同时使用MCU和FPGA/CPLD,通过AHB总线交互。 在开发时,MCU部分使用VScode搭建开发环境(我们提供所有安装包);CPLD/FPGA使用Quartus开发(兼容Altera,代码可以直接参考Quartus所编写的Verilog语言),并需要通过Supra工具进行综合转换。MCU与FPGA/CPLD交互使用通过AHB总线挂在一起(可以参考下ADC,DAC,以及比较器),FPGA/CPLD通过类似于MCU外设的型号挂在MCU上,速度比传统的SPI快上很多倍,可以单独运行也可以交互运行。 |
|
相关推荐
27 个讨论
|
|
FIFO IP <-> AHB我们在设计中创建了一个FIFO IP核,并将其挂载到AHB总线上,以实现MCU对FIFO的读写访问。 FIFO IP配置FIFO是先入先出,设计如下: FIFO的设计为先入先出队列,配置如下:
值得注意的是,FIFO的读写时序上,读取数据时输出会滞后一个时钟周期。
|
|
|
|
|
|
|
|
FPGA代码设计参考 这里的设计需要参考AHB的时序图,由于AHB总在线上升沿进行数据读写操作,而FIFO也是在上升沿进行操作,因此我们将系统时钟反相后输入FIFO,以确保时序的一致性。 此外,AHB在传输数据时,数据与地址并非处于同一时钟周期内,数据会滞后一个时钟周期,因此我们给 而在读取FIFO数据时,不需要
最后综合出来的rtl网表如下图所示:
|
|
|
|
|
|
|
|
MCU代码为了测试FIFO是否能正常工作,我们通过USB串口写入16个数据,然后读取并验证数据是否正确:
从输出结果可以看到,接收到的数据与我们写入的数据完全一致,说明FIFO功能正常。
|
|
|
|
|
|
|
|
|
在实际编程中,发现Quartus13.0中按照之前查到的方法,使用ramstyle属性并不能将reg变量设置为M9K,可能是我个人的理解不到位或者是哪里配置的问题。而使用IP核则能够正常使用上M9K。
|
|
|
|
|
|
|
|
采样时钟频率控制模块逻辑分析仪主要分为:stream模式和buffer模式。 其中stream模式是指采样和传输同时进行,不对采集的数据进行本地缓存。这种方式不受buffer大小的限制,但是受传输速率的影响,其采样率会收到一定的限制。 buffer模式相反,将采集到的数据先存储在本地,采样结束后再将其传输到上位机,这种方式能够实现很高的采样率,但是采样深度会受到buffer大小的限制。 由于AG32的CPLD上带有4个M9K,最大能够提供4KByte的存储空间,因此这里我们这里采用buffer模式。 受制于存储空间,采样率并不是越大越好,如果采样速度太快,则buffer会很快被填满,甚至无法存储一个传输周期的波形;然而受制于奈奎斯特采样定律,采样速度又不能太低,否则采集到的数据无法恢复出原始波形。 因此,我们首先需要设计一个采样使能信号,从而对逻辑分析仪的采样速率进行调整控制。其本质就是一个计数器分频电路。 |
|
|
|
|
|
|
|
功能代码设计具体设计代码如下:
仿真验证testbench:
测试结果:(分频10MHz) |
|
|
|
|
|
|
|
|
为了实现正确的采样并且存入RAM中,我们需要进行触发检测以及采样使能。 采样触发任何示波器的存储器容量都是有限的,因此逻辑分析仪必须使用触发。 逻辑 分析仪中常见的触发方式包括延迟触发、限定触发、组合触发、毛刺触发等。 本简易逻辑分析仪主要支持以下几种触发方式:
触发条件检测
触发条件选择
触发标志位
采样存储除了采样触发外,还需要一个采样使能标志位,它起到一个总开关的作用,只有打开采样使能且满足触发条件时,才会进行数据的采集与存储。否则若只满足触发条件,则不进行采样。
FIFO写使能控制
|
|
|
|
|
|
|
|
VE文件引脚定义ct_trigger和full_sign两个信号线首先是act_trigger和full_sign为两个信号线,我们分别将其映射到GPIO2_1和GPIO2_2上。其中,act_trigger方向为MCU->CPLD;full_sign方向为CPLD->MCU。因此其定义如下:
8个采样引脚根据板卡上的排针排列,我们选取的采样引脚对应关系如下:
VE文件编写如下:
MCU代码编写
act_en: MCU->CPLD 当进行读取FIFO时将其拉低 full:CPLD->MCU FIFO满标志位,当full=1时,将act_en拉低,并且读出FIFO中全部数据 上位机代码
结果
|
|||||||
|
|
|||||||
|
|
|||||||
【AG32开发板体验连载】简易逻辑分析仪
【LuckFox Pico 开发板免费试用】+ 驱动SPI接口LCD显示
【LuckFox Pico 开发板免费试用】6.使能 DHT11 Driver
【LuckFox Pico 开发板免费试用】5.内核驱动温湿度传感器 DHT11
【LuckFox Pico 开发板免费试用】4.纯终端Windows下SDK编译
【LuckFox Pico 开发板免费试用】3.镜像烧录+多种调试
【LuckFox Pico 开发板免费试用】2 LuckFox Pico画的扩展板分享
【LuckFox Pico 开发板免费试用】+ 系统烧写
【中科微CSM32RV003绿色开发板免费体验】第一帖-开箱体验
【Start_DSC28034PNT湖人开发板免费体验】+点灯
扫一扫,分享给好友
电子发烧友网
电子发烧友论坛
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191
淘帖