内容正文

龙芯杯CPU设计竞赛与ZYNQ设计流程介绍

日期:2019-09-05 11:52 作者:admin 点击数:

读地址通道和读数据通道的传输不能够同时进走,master端经由过程握手信号将读地址写入slave端,slave准备数据然后经由过程握手信号返回数据给master。

set_property IOSTANDARD LVCMOS33 [get_ports {LED[7]}]

 

倘若你行使其他板卡,那么要按照外设的位置和内存型号进走竖立,这边进走浅易介绍。

选择重新封装选项进走封装,封装完善后VIVADO工程会主动关闭。

然后就能够生成比特流了。

经由过程上述设计,经由过程写数据通道和写地址通道获取到了CPU想要写入的地址和数据,下一步就要将数据写入对答寄存器。由于吾们选择了4个寄存器,在代码中已经由VIVADO为吾们主动生成了4个slave寄存器。4个寄存器共必要2位地址线来进走寻址,由于slave是挂在ARM 处理器外部的,当处理器调用函数写外设的寄存器,倘若不做偏移,那么数据就会写入寄存器0,因此地址axi_awaddr[ADDR_LSB OPT_MEM_ADDR_BITS:ADDR_LSB]决定了将数据写入哪个寄存器。ADDR_LSB是由数据位宽决定的,DDR数据位宽为字节,因而地址线最矮位对答8位数据,对于32位位宽的数据,吾们必须进走32位对齐,因而地址偏移从32/4 1位最先。OPT_MEM_ADDR_BITS则决定了偏移周围有多大,两位的位宽就足以寻址4个寄存器,一次本工程中OPT_MEM_ADDR_BITS是1,地址位宽是[1:0]共二位,倘若8个寄存器就必要三位,那么OPT_MEM_ADDR_BITS就必要定义为2。

国内各栽IC设计竞赛、EDA设计竞赛也越来越多,但笔者认为,最具有代外性最能逆映一所高校在校弟子数字IC设计程度的也就是“龙芯杯”CPU设计竞赛。“龙芯杯”MIPS CPU设计已经举走三届了,参赛的队伍程度也在一连的挑高,一个大三本科生设计一颗带有4发射乱序处理、分支展望等功能且能跑Linux操作体系的CPU核已经不是什么题目,并且FPGA验证的主频已经超过了120MHz,凸显了FPGA时序优化能力的升迁。随着RISC-V等开源CPU的一连发展,信任国内在CPU设计能力上的差距正在添速缩短,被ARM和INTEL卡脖子的时代能够快要终结了。

函数 Xil_Out32(0x43c00000,1

 

必要仔细的是,这片面I/O口为ZYNQ的MIO,而PL片面的为EMIO。

 

set_property IOSTANDARD LVCMOS33 [get_ports {LED[5]}]

set_property PACKAGE_PIN T21 [get_ports {LED[1]}]

set_property PACKAGE_PIN U19 [get_ports {LED[6]}]

 

经由过程上述代码,读者能够会疑心写地址通道和写数据通道为什么绑定到一首了呢?难道AXI-Lite总线的写地址通道和写数据通道数据传输必须同时发生吗?吾们参考了XILINX的xapp1168中关于AXI总线设计的工程,发现在它的master端设计中,写地址通道和写数据通道的传输是由联相符个信号触发的。也就是说master端总是先准备益写地址通道和写数据通道的数据后,然后同时传输要写入的地址和要写入的数据。因此,在slave端,保持相通的设计就能够获得最优的性能。这也是上述代码中为何写地址通道获取数据时也请求写数据通道(wvalid)信号也有效。

 

 

 

set_property PACKAGE_PIN V22 [get_ports {LED[4]}]

 

 

 

 

 

 

set_property IOSTANDARD LVCMOS33 [get_ports {LED[4]}]

 

 

 

 

另外,想要成功启动linux起码必要一个TTC外设。

 

在上述新工程中,能够望到工程的构造现在录led_v1_1_S00_AXI才是吾们创建的总线接口模块,而led_v1顶层模块只是增补了对总线接口的例化而已。那么VIVADO竖立的IP为什么要新封装一层例化呢?吾们用另一个多个AXI通道的工程来望一下,当IP必要多个AXI通道时,吾们发现顶层例化了多个AXI总线通道,吾们能够方便的设计和增补.v文件来完善多个数据通道之间的数据传输和总线限制。

从参赛的周围上来望,也在一连的扩大。今年又新添入了不少高校,像北京邮电大学、河北大学等。龙芯杯竞赛起码逆映了这些高校在CPU设计倾向的课程竖立已经异国题目,设计CPU必要多多课程的撑持,《计算机构成原理》、《编译原理》、《操作体系》及FPGA设计开发等有关课程,相对而言,国内绝大无数高校固然有有关的课程,可想找到有能力设计CPU的弟子组队参赛的高校却不多。

时钟配置选项用于管理PS单元和PL单元的时钟,包括内存频率和CPU主频新闻,I/O口频率竖立。另外PS片面能够向PL片面挑供最多4个时钟,这边仅开启一个100M的时钟。

 

配置IO选项用于关闭和掀开ZYNQ的外设片面的配置,由于ZYNQ可变通配置,因此必要选择和板卡相对答的外设位置,选择Zedboard的益处在于能够行使VIVADO中预设的板卡新闻进走主动竖立。

上述代码完善了slave端写地址通道的相答,slave端在上电复位后保持awreday信号为矮电平,当master发出awvalid信号时,slave端将写地址通道上的地址数据存入寄存器,并将awready信号拉高一个时钟周期,完善一次写地址通道的传输过程。

吾们在工程管理中选中创建的Block Design,选中生成HDL

set_property PACKAGE_PIN T22 [get_ports {LED[0]}]

 

 

VIVADO会将处理器体系和IP部件生成Verilog文件。在工程中增补收敛文件,添入对LED[7:0]的管教收敛。

 

set_property IOSTANDARD LVCMOS33 [get_ports {LED[0]}]

 

 

“龙芯杯”竞赛的影响和设计程度一连升迁PS与PL接口设计和硬件设计(1)自定义IP封装(2)AXI-Lite制定分析(3)硬件工程设计

 

 

在柔件工程上右键选择Run As -> runconfigurations

选择对答的比特流,选中烧写FPGA和复位体系, 摆脱游戏技巧点击run, 手机电玩城能够望到烧写完善后开发板成功点亮流水灯。

益了,体育棋牌网址回归正题, 电子娱乐网址以下介绍ZYNQ系列FPGA如何行使。以下内容作者是殷建飞。

 

set_property PACKAGE_PIN U22 [get_ports {LED[2]}]

 

在接口选项中, 摆脱游戏技巧选择一个AXI-lite的Slave接口,数据位宽为 32位,寄存器数目为4,这边吾们不必要太多的寄存器。自然在面对更复杂的行使时,能够增补更多的AXI总线通道。

 

 

 

随着开源的MCU源代码越来越多,也逐渐的影响着嵌入式体系开发的思路,展现了两栽以前不常见的设计思路。第一,原本必要购买一颗MCU芯片的设计,现在直接考虑购买一颗带有MCU硬核的FPGA(如ZYNQ系列FPGA)替代,既有MCU的功能,又有接口可编程的能力,更添的变通;第二栽思路是设计中原本必要写复杂限制逻辑的Verilog模块,现在直接考虑替换为一颗或者多颗开源的MCU IP核,逆正这些MCU都是验证过没题目的,并且占用资源很幼,同时可编程也带来了功能转折的变通性,何笑而不为呢!本公多号计划分两次介绍上述第一栽行使的两栽迥异行使场景实例,带操作体系和不带操作体系来限制LED灯的行使。

最先来望写数据接口,写数据必要写数据地址通道先发送地址,然后写数据通道发送数据,slave端批准完善后经由过程写相答通道通知master端。

最先点击各项的蓝色感叹号,vivado会主动更改IP的一些新闻。通盘消逝后就能够进走IP封装。

必要仔细在顶层文件中增补该端口。

 

掀开肆意一个VIVADO工程,选择Tools中的Creatand Package New IP选项,点击next进展。

 

 

由于Zedboard开发板有8位led灯,因而吾们设计一个8位宽的wire型线连接到寄存器0的矮8位即可。

本次实验基于VIVADO2017.4版本进走硬件设计,竖立VIVADO工程并选用Zedboard开发板(如许后面的片面接口能够行使VIVADO默认配置)

 

 

 

顶层模块如图,保存。

 

随着复兴华为事件的一连发酵,集成电路走业恰似长颈鹿的脖子相通被一双无形的手给紧紧的卡住了。之因而称之为长颈鹿的脖子,是由于集成电路走业拥有很长的产业链,电子娱乐app而在这个产业链上吾们却处处都弱,拿长颈鹿又细又长的脖子来形容再正当不过了。

 

 

 

 

增补完善后将led端口引出,能够行使迅速键Ctrl T,或者行使右键菜单也能够完善。吾们将盈余的AXI标准端口行使VIVADO的主动连线功能完善连接。点击Run Connection Automation,勾选一切IP,完善后发现VIVADO为吾们主动增补了一个AXI交换矩阵和复位模块。

 

 

set_property IOSTANDARD LVCMOS33 [get_ports {LED[6]}]

在完善硬件设计片面后,吾们能够浅易的运走一个裸机程序来检验一下吾们的映射有关是否准确。最先在VIVADO中将生成的比特流导出到SDK。

 

set_property IOSTANDARD LVCMOS33 [get_ports {LED[1]}]

 

 

上面分析了写通道的数据传输,接下来分析读数据通道

在SDK下,已经包含对答工程的硬件平台和板级声援包,点击File -> New -> Application project竖立一个新的SDK工程。

 

set_property PACKAGE_PIN W22 [get_ports {LED[5]}]

set_property PACKAGE_PIN U21 [get_ports {LED[3]}]

 

选择File,Export->ExportHardware,而后选择File->Lunch SDK,选择本地路径(如许会包含硬件比特流)。

新建block design,增补zynq processing_system,然后点击Run BlockAutomation进走硬件板卡新闻填充。运走完善后能够望到ZYNQ体系以及配置益了DDR内存和串口竖立。

set_property PACKAGE_PIN U14 [get_ports {LED[7]}]

 

 

竖立工程名称,选择裸机,C说话开发,班级声援包默认。Next,选择HelloWord模板。吾们在main函数中做浅易修改:

set_property IOSTANDARD LVCMOS33 [get_ports {LED[2]}]

 

 

将封装益的IP增补到库现在录,在肆意VIVADO工程中选择IP Catalog选项,选中USER Repository选项,右键选中Add Repositor,选中吾们之前竖立IP时选择的现在录。增补完善。

 

对于写数据通道而言,其数据传输过程和写地址通道的传输过程很相通,slave端上电复位后将wready信号拉矮,在master将wvalid信号拉高后,slave端将数据存入寄存器同时将wready信号拉高一个周期,完善一次写数据通道传输过程。

 

 

倘若slave基地址0x43c00000,当吾们调用Xil_Out32(0x43C00000,Value)写的就是slv_reg0的值,此时axi_awaddr[ADDR_LSB OPT_MEM_ADDR_BITS:ADDR_LSB]即axi_awaddr[3:2]为2’b00,倘若地址偏移4位,Xil_Out32(0x43C00000 4,Value),此时写入slv_reg1寄存器,同时axi_awaddr[3:2]为2’b01.

 

VIVADO 中挑供了多栽AXI总线接口的IP核,例如DMA IP中行使AXI-lite用来完善CPU配置DMA引擎的寄存器,而AXI标准总线用来完善DMA引擎面向内存地址映射的搬运 数据。 但是官方的IP核行使不足变通,这边吾们能够封装本身的IP并在其中添入必要的逻辑处理。

进走IP命名和版本的选择,另外必要选定工程路径,这是稍后建 立IP时VIVADO会新竖立的工程路径。

 

 

 

Slave上电复位后将读地址通道arready信号拉矮,master必要读数据时将地址发送到读地址通道的araddr信号线上,同时拉高arvalid信号,发首一次读地址发送,slave端检测到arvalid信号有效,锁存araddr数据,并拉高arready信号完善读地址批准过程。slave按照ardddr的偏移获取对答寄存器的数据,然后在读数据通道上主动发首一次数据传输,即将数据置入rdata并拉高读地址通道的rvalid信号,期待master批准数据并返回rready信号有效后完善读数据传输。

点击OK保存对处理器体系的配置,不息增补IP,搜索吾们之前定制的IP,发现led V1版本的自定义IP核,点击增补。

 

 

 

 

 

#include #include "xparameters.h"#include "sleep.h"#include "xil_io.h"int main(){ int i = 1; while(1) { for(i=0;i

经由过程上述程序,吾们讲一个8位循环的数据写入寄存器0中,由于寄存0的矮8位连接到了LED灯,因此会有流水灯的成果。

 

至此,吾们自定义的IP就设计完善了,吾们重新封装该IP核。

 

(4)裸机程序验证

选择竖立一个AXI4的外设选项

 

硬件设计片面的做事在这边就完善了,吾们必要记录外设在ARM处理器体系上挂载的地址,如许才能行使柔件写入和读取其数据。在VIVAOD中Address Edit选项卡中能够编辑外设地址,这边吾们保持默认,并记录。

写操作由于是从master传输数据到slave,因此必要slave返回一个准确的相答信号给master来通知master吾已经准确收到数据,这就是写相答通道。由于写相答通道数据是从slave端向master端,因此由master端发出ready信号,slave端上电复位后拉矮valid信号,在检测到master端的ready信号后将valid信号和bresp回答信号一路发送到总线上完善写相答传输过程。一个完善的写营业过程完善。

 

选择Edit IP,此时VIVADO会掀开一个新的工程。自然,也能够选择将IP增补到库,然后在工程中搜索增补该IP核,然后重新选中该IP选择Edit in IP Packager,VIVADO同样会掀开一个新工程修改之前的IP。

 

 

 

 

PS-PL配置选项用于掀开PS单元和PL单元之前的互联总线,PS单元中面向PL单元的有4个GP接口。也就是两个AXI-Lite主端口和两个AXI-Lite从端口,以及4个高速的HP接口。由于吾们必要CPU配置FPGA,因此启用一个GP主端口。

 

DDR配置选项选择准确的内存型号即可,这边照样行使Zedboard的默认配置即可。较为主要的是下面的休止选项,能够选择掀开PS和PL之间的休止开关,由于本次工程一时异国用到,因而不再赘述。

 

 

下面吾们对AXI-Lite总线制定进走浅易分析,AXI总线共5个数据通道,别离是写地址通道、写数据通道、写相答通道和读地址通道、读数据通道。AXI采用握手信号机制,当发送数据一端发送valid信号,而批准信号一端发送ready信号,当valid和ready同时有效时数据完善一次传输。

 

 

 

 

 

下面的代码实现了按照偏移地址将数据写入对答寄存器的操作。

 

 

 

 

片面硬件设计中必要CPU完善对电路寄存器的配置,为了完善Zedboard对FPGA上片面寄存器的配置功能,能够在PS单元(处理器体系)上运走裸机程序(无操作体系声援)完善和PL单元(FPGA片面)的数据交互功能,此时PS单元更像单片机开发;另一栽手段是PS单元运走Linux操作体系,经由过程驱动程序和行使程序完善对硬件寄存器的读写操作,并且Linux有着完善的网络制定栈声援,后续可拓展性更强,能够更益的发挥ZYNQ这栽异构架构芯片的性能。主要分为两片面,别离阐述Zedboard中FPGA和处理器互联总线与硬件设计和Zedboard处理器体系上嵌入式Linux的移植与经由过程驱动和行使程序浅易配置FPGA寄存器的实现。本文主要介绍不带操作体系的情况。

set_property IOSTANDARD LVCMOS33 [get_ports {LED[3]}]

PS与PL交互能够经由过程ZYNQ体系内的高速总线来完善,ZYNQ内包含AXI4标准总线、AXI-Lite轻型总线和AXI-Stream流式总线。其中AXI4标准总线声援有地址、猝发和不息的传输,能够用于大容量数据的传输;而AXI-Lite总线则是一个轻量级的地址映射单次传输接口,占用更少的逻辑资源;AXI4-Stream是面向数据流的无地址的传输,更正当承载视频流等流式数据。综上,由于本次实验硬件设计较为浅易,数据传输量较幼,因此选用AXI轻型总线行为PS单元与PL单元交互接口。

,,

Powered by 体育开户网址 @2018 RSS地图 html地图