您好,欢迎访问三七文档
1SoPC课程设计(报告)题目:串口通信控制学院:系部:专业:班级:学生姓名:指导教师:起止时间:2014年6月16日——2014年6月27日21课程设计要求1.1基本要求课程设计要求所有题目采用QuartusII工具提供的图形输入或者VerilogHDL语言输入方式作为电路设计工具,在NiosII上采用C语言实现编程,自定向下正向设计方法,先设计硬件系统,再进行软件编程,能够生成正确的FPGA下载代码和NiosII执行的软件代码。硬件功能仿真和时序仿真采用第三方工具(建议为:modelsim),综合与布局布线工具为:QuartusII,SOPCBuilder建立软件运行环境,具体要求为:1)根据课设题目,进行总体设计方案(10分);2)硬件电路顶层设计、模块划分、引脚定义(10分);3)电路设计及NiosII设计,提交电路设计源代码或电路图(10分);4)综合与布局布线,提交综合与布局布线报告(10分);5)FPGA下载代码和引脚分布(10分);6)软件总体设计及画出流程图(10分);7)程序设计,提交程序代码(10分);8)程序编译下载及仿真调试(10分)。1.2课程设计选题要求本次课程设计题目共12个,要求每个同学独立完成其中的一个,每个题目不超过3人。题目要求独立完成,设计和报告如有雷同,将一个成绩平均分配雷同的同学。1.3时间、地点时间为每天14:00至20:00,地点在二号实验楼集成电路设计实验室。1.4课程设计纪律要求全勤且提交课程设计报告及心得体会者记20分,课程设计时间段内任意时间点名未到、迟到、玩游戏扣除:3分/次,6次及6次以上者课程设计成绩直接记:不及格。2实验使用平台实验平台使用Altera的DE2开发板,开发工具使用Altera的QuartusII和NiosIIIDE。3课程设计过程及设计方案一、设计方案1、通过UART实现串口通信;3(1)建立UARTIP核;(2)在软核中用结构体实现收发数据。2、用LCD显示结果。通过在IP写LCD驱动,然后在软核中通过读串口发的字符将这个字符显示出来。3、设计流程图:接收断点入口发送断点入口Y3、断点保护读字符到接收缓冲区是否接收到指定的置接收完标志关闭接收定时器断点恢复返回断点重新设置启动定时器断点保护发送缓冲区是否为发送下一个字符、字符串发送缓冲区字符减一断点恢复返回断点发送中断关串口通信助手接收处理串口通信助手发送处理LCD显示4二、硬件开发1、首先,我们要在NIOSII软核中建立UART模块。打开Quartus软件,双击进入SOPCBUILDER,然后点击下图所示所示红圈处,点击后,如下图所示,红圈1处为波特率,我们设置为115200;红圈2处是是否允许通过软件改发波特率,我们选中,便是允许,这样我们就可以通过软件来随时更改波特率,如果软件不设置,默认值就是上面设置的115200;红框3中是设置一些与串口有关的参数,校验方式,数据位,停止位,后面的那个基本不用,设置好以后点击NEXT,Finish,完成构建。5构建好以后,将其更名为uart。2.向新建立的SOPC系统上添加On-ChipMemory在SOPCBuilder程序界面左侧SystemContents标签页的树型组件列表中选择MemoryandMemoryControllers-On-Chip-On-ChipMemory(RAMorROM),双击添加至系统中(设置存储器的容量大小为30K)63、添加NiosIIProcessor。双击AlteraSOPCBuilder-NiosIIProcessor,在弹出的对话框中间选择第一个NiosII/e,表示economy,最小的NIOSII核心。下面的ResetVector和ExceptionVector都选择onchip_men,即刚才添加的片上RAM的名称。其它的都保留默认设置即可。点击Finish添加CPU核。74、添加IO控制器。双击Peripherals-MicrocontrollerPeripherals-PIO(ParallelI/O),保持默认设置即可,表示有8个输出用IO口,分别控制开发板上的LCD的数据存储(LCD_DATA[7..0])8(然后依次添加LCD_EN、LCD_RS、LCD_RW、LCD_ON、LCD_BLON各一位作为IO口)5、然后进行自行分配地址,自行分配中断号。一切就绪,点击General,进行编译。编译好以后退出,进入Quartus界面,然后运行TCL脚本,编译,等待……编译好以后,给其分配引脚,如下图所示:96、综合与布局布线,提交综合与布局布线报告如下:7、选择JTAG的方式将程序下载到FPGA中。1三、软件开发1、打开NIOSII9.0IDE后,按快捷键Ctrl+b编译程序,等待编译……编译好以后,我们再来看system.h文件。可以看到UART部分的代码了,如下:2、下面,我们开始编写软件程序,首先是修改inc.h。大概截图如下所示:11这个结构体体中包括5个共用体,这5个共用体对应UART的5个寄存器,我们来看看这5个寄存器,下图所示:这个图中的(1)有一个说明,就是说第7,8位根据设置的数据位有所改发,我们设置数据位8位,所以7,8位不前6为性质相同。这个结构体的内容是按上图的寄存器顺序来定义的,(因为endofpacket没用到,所以在结构体中没有定义)这样在操作过程中就可以实现相应的偏移量(offset)。在这个结构体中,我们嵌套了5个共有体,在共用体中,我们又使用了结构体和位域。其实,这样做的目的就是想对寄存器的每一位进行单独的控制,同时也可以实现这个寄存器的整体控制。3、接着建立编写uart.h文件:1114、建立编写main.c如下:115、将软件下载到FPGA实验板上6、实验结果:在串口软件上实现字符串a/A~z/Z的发收,非字符返回error,同时在lcd上显示。3.1内容要求报告应该包含目录、正文、总结(心得体会)。其中正文应该涵盖1.1节基本要求。23.2报告排版要求报告一级标题采用黑体四号,段前段后一行,行间距20磅。二级标题采用黑体小四号,段前段后一行,行间距20磅。正文采用宋体小四号,段前1行端后0行,行间距20磅。3课程设计总结首先感谢老师给我们机会更好地学习SoPc。通过本次SoPC课程设计我学到很多知识,对之前SoPc中的有些问题也解决了。与此同时,我也对QuartusII和NiosII9.0IDE软件也有了深刻的理解以及应用,也更好地理解了SoPc的工作原理,更深切的了解到软硬件相结合的好处与功能实现,希望在以后的SoPc学习中更进一步!!2
本文标题:SOPC课程设计
链接地址:https://www.777doc.com/doc-6141388 .html