片上系统课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华中科技大学

研究生课程考试答题本

考生姓名王坤

考生学号D201577731

系、年级计算机博2015

类别非定向

考试科目片上系统设计方法

考试日期2015年12月30日

评分

注:1.无评卷人签名试卷无效。

2.必须用钢笔或圆珠笔阅卷,使用红色,用铅笔阅卷无效。

片上系统课程设计报告

一、题目要求

1、实验题目

本次课程设计的题目是:简易加减计算器。

2、实验要求

在完成此次课程设计以后,通过自己亲自动手写IP核以及相应的应用程序,在通过测试以后能达到以下几点要求:

①熟练掌握Verilog语言;

②熟练掌握Vivado和SDK等软件的使用方法;

③熟悉ZedBoard开发板及其开发流程;

④学会编写IP核和相应的应用程序性并在Zedboard开

发板上加以测试;

⑤熟悉片上系统(SOC)的开发流程;

二、设计细节

1、硬件设计

此次我自己定制的IP核实现了一个可以进行简易的加减计算的计算器。硬件部分的设计会在Vivado中通过Verilog 语言实现并对IP核进行封装。最后添加到Zynq系统中。实现的基本功能如下:

①从应用程序读取需要进行计算的两个操作数;

②从开发板的开关读取需要进行的操作(此次试验只实

现了加和减,可以很容易的进行扩展);

③应用程序可以从相应的地址读取计算结果并打印在控

制台中;

④计算结果通过LED灯显示在ZedBoard开发板上面;

2、软件设计

为了对前面定制的IP核进行测试,我也设计了相应的应用程序。软件部分的设计会在SDK中通过C语言实现,最后在相应的硬件上面运行,从而对硬件的功能进行测试。软件部分实现的基本功能如下:

①从控制台读取两个将要进行计算的操作数,然后将该

操作数传给相应地址的寄存器;

②从结果寄存器中读取出结果并打印在控制台中;

③从操作符寄存器中读取进行的计算操作,并打印在控

制台中;

④用户可自定义循环计算的次数,即在一次计算结束后

询问用户是否还要继续进行计算,若用户继续进行计算则

要求用户继续输入相应的操作数,否则程序自动结束;

三、系统设计

1、系统设计概览

硬件系统设计的概览如3.1图所示:

图 3.1 硬件系统设计

首先添加Xilinx官方提供的Zynq PS IP核,然后添加我们自己用Zynq PL部分实现的Calculator_ip IP核,在连线的过程

中,我们还需要,负责总线通信的AXI Interconnect IP核和负责复位的PS Reset IP核。下面在第二小节对我自己实现的Calculator_ip IP核进行详细的解释。

2、计算器设计

首先我们在设计计算器IP的时候定义其为AXI_Peripheral 类型,然后取名为Calculator。然后我定义了5个寄存器,具体作用是:寄存器0用来存放计算的操作符,寄存器1用来存放在开发板上面显示的结果,寄存器2用来存放在第一个操作数,寄存器3用来存放第二个操作数,寄存器4用来存放计算的结果。因为我们的操作符是通过开关来控制的,所以我们在IP核中定义了一个相应的7位的数据输入端口Data_In,输入的数据将会传送给寄存器0;其实在本次实验中并没有用到7位,这里定义7位,只是方便以后的扩展。同理,我们的计算结果想要显示在开发板上面,所以我们需要定义一个7位的数据输出端口Data_Out,输出的数据由寄存器1传来。最后就是具体的计算功能了,这里很简单,就是把寄存器2和寄存器3里面的数据计算后导入寄存器4即可。当然需要说明的是:寄存器2和寄存器3里面的数据是应用程序通过地址传送过来的;而寄存器4里面的数据将会被应用程序通过地址读取后再传入寄存器1中。计算器的数据通路如图3.2所示。

图 3.2 系统的数据通路

四、测试结果

在设计完系统的硬件和软件部分之后,我对系统进行了测试,测试结果如下:

1、计算1+2

SDK控制台运行结果如图4.1所示

图4.1 1+2 SDK运行结果图

ZedBoard板运行结果如图4.2所示

图4.1 1+2 Zedboard板运行结果图

2、计算1+254

SDK控制台运行结果如图4.3所示

图4.3 1+254 SDK运行结果图

ZedBoard板运行结果如图4.4所示

图4.4 1+254 Zedboard板运行结果图

3、计算1+255

1+255出现了溢出,所以得到的结果为0。SDK控制台运行结果如图4.5所示

图4.5 1+255 SDK运行结果图

ZedBoard板运行结果如图4.6所示

图4.6 1+255 Zedboard板运行结果图4、计算4-2

SDK控制台运行结果如图4.7所示

ZedBoard板运行结果如图4.8所示

图4.8 4-2 Zedboard板运行结果图

5、计算1-2

1-2同样出现了溢出,所以得到的结果为255。SDK控制

台运行结果如图4.9所示

ZedBoard板运行结果如图4.10所示

图4.10 1-2 Zedboard板运行结果图

五、分析和结论

通过以上的测试可以发现此次实验在一定程度上可以说是成功的,但是同样也存在着很多的不足之处。首先在测试的过程中,如果得到的计算结果是在0~255之间的话,我们就可以得到正确的计算结果。但是一旦结果超出了这个范围,因为我申请的寄存器只是8位的,所以结果会发生溢出,就会出现错误的结果。这点是系统的不足之处。同时,系统的功能有些简单,只能计算加或减,但是因为扩展乘除等运算总体上的思路和这个实验相差无几,所以我也没有进行扩展。但是总体上来说,我还是完成了整个系统的设计,并得到了正确的结果,所以此次实验总体上来说还是成功的。

通过此次课程设计,我学会了如何利用Zynq系统的PL部分定制IP

相关文档
最新文档