图 15 UART16550
如图15,PVS332支持一个带FIFO的UART收发器,具备16字节深度的FIFO,最高支持波特 率为9600。UART16550的控制寄存器如图16所示: 图16 UART16550控制寄存器*详情可以参考附录中的PVS332编程手册2.2.1.8 控制寄存器组 图17 控制寄存器组PVS332 SoC中有一个控制寄存器(图17 控制寄存器组)控制整个SoC的各项功能。控制寄存器组里面包含了:(1)系统定时器PVS332 SoC支持RISCV架构定义的系统的定时器(MTIME、MTIMECMP)这两个寄存器在0x0ffc0000-0x0ffc000f的空间里。该定时器在MTIME计时到MTIMECMP之后会产生定时器中断,只有当程序更新了MTIME或者MTIMECMP寄存器之后中断才会被清除。(2)软件中断控制器软件中断控制器可以让程序使用置1的方式产生同步的软件中断。(3)中断控制器(SIC)SIC可以支持最多256个外部中断的管理,并可以配置它们的优先级,由这个寄存器管理的中断源最后都连接在PRV332处理器的ext_int中断上,触发中断之后PRV332的xcause寄存器将会被更新为外部中断,软件可以查询SIC里面的中断挂起寄存器而找到是哪个外部设备发起了中断。图18是SIC的寄存器列表,详情可见附录中的《PVS332编程手册》 图18 SIC控制寄存器*详情可见附录中的《PVS332编程手册》。2.2.2 系统主板系统主板分为3大部分,分别为FPGA插座部分、拓展插槽部分、SPI和GPIO和flash部分。2.2.2.1 FPGA插座部分图19 FPGA核心板插座部分
如图19,在这个部分里的CPU位置,可以插入上述FPGA核心板作为系统主板的CPU,该核心板一共有96个可用IO,我们将IO分配为:拓展卡IO、通用输入输出(GPIO)、SPI收发器 三个部分。在旁边的稳压器部分,主要为板上的逻辑芯片供电。同时我们板载了多个指示灯用于指示系统的运行状态。2.2.2.2 拓展插槽部分 图20 拓展插槽部分在拓展插槽上图20所示,我们使用32个IO作为双向数据总线,22个IO作为地址总线,4个IO作为字节选择线, 2个IO作为读写使能线,1个IO作为准备好信号输入线。总线工作频率为8MHz(FPGA工作频率33MHz时)。最大传输速度为32MB/s。为了实现多个外部设备,我们将A19-A21作为一个3-8译码器的输入信号,使用该3-8译码器获得8个译码器信号,这样外部就可以获得8个插槽的片选信号。其余的A0-A18作为地址线,配合四个字节选择线可以寻址8 * 512K * 4Byte的空间。2.2.2.3 SPI、GPIO和flash部分图21 SPI、IO和外部FLASH
SPI部分同样使用3-8译码器作为从设备选择信号,而后使用一片8-1数据选择器作为八个SPI从设备的MISO选择。FLASH部分使用额外的74系列逻辑芯片搭建了复用器,在调试器对系统进行复位时(/RESET为低),此时复用器将FLASH的引脚切换给调试器的MOSI、MISO、SCK、CS使用。当调试器烧录FLASH完成之后,/RESET被拉高,此时该复用器将FLASH切换给主系统的SPI收发器使用。2.2.2.4 主板PCB图 图 22 主板PCB图2.2.2.5 主板实物PVS332可以搭配配套的PVS332-XC7MB主板,板上引出了七个SPI,16个GPIO和 烧录器用的插针。同时引出了四个可以直接使用的拓展槽接口和一个需要外接其它拓展电路的接口。主板实物如图23所示:图23 主板实物图
2.2.3 调试器调试器使用ESP32作为主控,使用ESP32通过蓝牙/WIFI等多种方式连接系统主板和电脑端软件。该调试器可以和电脑端配套软件联合使用,执行包括对系统主板进行复位、烧录外部FLASH、监视系统主板串口并回传数据等一系列任务。调试器通过自定义排线接口与系统主板相连接,自定义接口的引脚定义如图24所示:图24 调试器电路
调试器通过上图中MISO,MOSI,SCK,/CS来完成对系统主板的复位和调试工作。在/RESET为0时(即系统复位), 调试器作为SPI从机,MOSI,MISO,SCK,CS引脚控制系统主板上的外部FLASH;在/RESET为高(即系统正常工作)时,MOSI,MISO,SCK为SoC的SPI收发器0引脚,此时调试器作为SPI 从机,可以监视串口数据。调试器实物如图25所示: 图25 调试实物图2.2.4内存拓展卡外置内存拓展卡是两片IS62WV51216构成的,一共2兆字节。可以插在主板上的拓展插槽内,可以让系统获得额外的2MB内存。拓展卡如图26所示: 图26 内存拓展卡2.2.5 PC端IDE软件部分我们完全自主研发了一个IDE-PRV332IDE,具备编辑RISCV汇编,生成多种机器码文件的能力,可以极大的方便程序验证和调试工作。IDE界面如图27所示:图27 IDE界面
2.2.5.1 IDE各项功能介绍 图28 IDE功能如图28所示,IDE功能从上到下依次为:复制文件、剪切文件、新建文件、生成二进制文件、生成Hex文件、生成coe文件、缩进、换行。其中生成二进制文件可以让汇编代码直接被仿真器仿真;生成的Hex文件可以直接烧录到flash里面,配合SoC内部的BOOTLOADER程序使用;生成的coe文件可以作为xilinx FPGA的ROM里面的内容。2.2.5.2 IDE实现技术特点Prv332ide使用pyqt编写图形界面同时重构了原有的riscv汇编工具链,是一个总代码约2000行的轻量级prv332定制的可以直接烧录的ide.汇编工具链上抛弃传统的两遍扫描算法使用高效的一遍扫描算法,同时利用散列算法进行加速使得汇编翻译和地址分配速度非常快。不仅在速度上进行了优化,同时利用python面向对象的优点预留多个接口,配合图形界面可以直接生成用于仿真的二进制文件(直接用于modelsim仿真),coe文件(用于直接烧录xilinx的BROM),hex文件(用于直接烧录到soc的片外flash)。大大方便了验证和调试工作。图形界面使用pyqt开发,除了汇编工具链生成的之外还可以利用socket直连jttag接收soc传来的数据以及烧录工作。三、完成情况及性能参数 3.1综合完成FPGA逻辑资源占用 图29 FPGA布线占用 图30 FPGA资源占用图29和图30可看到,综合布线完成后共占用逻辑单元3628个,一共使用总逻辑单元数量的45.35%。片内RAM共使用8KB,占用总片内RAM资源的80%。在总的资源占用上较为良好的达到了对轻量的需求。3.2 在MODELSIM里面进行汇编代码仿真(以SPI收发器为例)首先我们在配套的汇编软件中写SPI收发器的汇编代码,图31所示: 图31 SPI收发器驱动此程序写了一个使用SPI收发器完成发送一系列字符串的程序的程序。程序流程如下:设置SPI收发器的基地址、设置要发送的数据、使能SPI收发器、检查SPI收发器的TXOK位,若为1则继续发送下一个字节的数据。其次我们使用PRV332IDE生成给modelsim仿真使用的二进制文件,如图32所示: 图32 生成的二进制文件然后我们打开modelsim,直接开始仿真,可以看到SoC的SPI有关引脚上出现了我们希望看到的数据,如图33所示。 图33 仿真波形3.3 PVS332实机启动演示首先我们将上述仿真过的汇编代码使用PRV332IDE生成COE文件,如图34所示;接着我们将该COE文件作为PVS332系统里面BOOTROM的内容烧录到FPGA里面。为了更好的观察SPI收发器的工作情况,我们搭建如图35所示的测试电路。在该测试电路里,系统主板的调试接口和调试器通过排线连接在一起,由于系统主板的SPI收发器0和调试器有硬件连接,调试器监视SPI0收发器的数据,故我们用示波器观察系统主板上SPI0的SCK和MOSI线上的数据。 图34 COE文件 图35测试电路系统启动之后可以看到从BOOTROM启动的SPI程序发出的信息,如图36所示: 图36 启动信息同时在示波器上也可以看到SPI收发器正常工作,图37所示: 图37 示波器观察到的波形 四、总结4.1主要创新点(1)本系统完全自主研发了一个简单的SoC,主CPU同样为自主研发,抛弃了MCS51,X86等落后的指令集,采用了新型的RISCV指令集,(2)本系统同时完全自主研发了一个汇编语言IDE,在保证简单易用的前提下,实现了生成多种文件的功能,极大的方便了调试。(3)本系统的SoC不仅可以在仿真软件上运行,我们还制作了相应的系统主板,突破了目前国内同类教学用RISCV系统只有仿真文件的问题。4.2可扩展之处(1)目前只支持少量的通信设备(八个SPI一个UART),以及非常少的拓展卡设备可以用(只有一个2MB拓展内存卡,最多只能拓展16MB的外部储存空间)。(2)目前的汇编器只支持汇编语言开发,以后可以移植GCC编译器让该系统可以用于C语言编程下的微机教学。(3)目前本系统暂时不支持JTAG等调试机制,以后有望移植JTAG让调试更加简单。五、参考文献 [1]水头一寿,CPU自制入门[M].北京:人民邮电出版社,2014[2]胡振波,手把手教你设计CPU-RISC-V处理器[M].武汉:人民邮电出版社,2018[3]胡振波,RISC-V架构与嵌入式开发快速入门[M].武汉:人民邮电出版社,2018[4]夏宇闻,Verilog数字系统设计教程(第四版)[M].北京:北京航空航天大学出版社,2017[5]Andrew Waterman, Krste Asanovic, SiFive Inc.The RISC-V Instruction Set Manual Volume II :Privileged Architecture[Z].Califorina:University of California, Berkeley,July 27,2019.[6]Andrew Waterman, Krste Asanovic, SiFive Inc.The RISC-V Instruction Set Manual Volume I :Unprivileged Architecture[Z].Califorina:University of California, Berkeley,July 27,2019.END后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!FPGA技术江湖广发江湖帖
无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。
FPGA技术江湖微信交流群
加群主微信,备注职业+方向+名字进群
FPGA技术江湖QQ交流群
备注地区+职业+方向+名字进群