SOPC课程设计.docx
- 文档编号:12542825
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:18
- 大小:597.02KB
SOPC课程设计.docx
《SOPC课程设计.docx》由会员分享,可在线阅读,更多相关《SOPC课程设计.docx(18页珍藏版)》请在冰点文库上搜索。
SOPC课程设计
SoPC课程设计(报告)
题目:
串口通信控制
学院:
系部:
专业:
班级:
学生姓名:
指导教师:
起止时间:
2014年6月16日——2014年6月27日
1
课程设计要求
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实现串口通信;
(1)建立UARTIP核;
(2)在软核中用结构体实现收发数据。
2、用LCD显示结果。
通过在IP写LCD驱动,然后在软核中通过读串口发的字符将这个字符显示出来。
3、设计流程图:
断点保护
读字符到接收缓冲区
是否接收到指定的字符
置接收完标志
关闭接收定时器
断点恢复
返回断点
重新设置启动定时器
断点保护
发送缓冲区是否为空
发送下一个字符、字符串
发送缓冲区字符减一
断点恢复
返回断点
发送中断关闭
串口通信助手接收处理
串口通信助手发送处理
LCD显示
接收断点入口发送断点入口
Y
3、
二、硬件开发
1、首先,我们要在NIOSII软核中建立UART模块。
打开Quartus软件,双击进入SOPCBUILDER,然后点击下图所示所示红圈处,
点击后,如下图所示,红圈1处为波特率,我们设置为115200;红圈2处是是否允许通过软件改发波特率,我们选中,便是允许,这样我们就可以通过软件来随时更改波特率,如果软件不设置,默认值就是上面设置的115200;红框3中是设置一些与串口有关的参数,校验方式,数据位,停止位,后面的那个基本不用,设置好以后点击NEXT,Finish,完成构建。
构建好以后,将其更名为uart。
2.向新建立的SOPC系统上添加On-ChipMemory
在SOPCBuilder程序界面左侧SystemContents标签页的树型组件列表中选择
MemoryandMemoryControllers->On-Chip->On-ChipMemory(RAMorROM),双击添加至系统中(设置存储器的容量大小为30K)
3、添加NiosIIProcessor。
双击AlteraSOPCBuilder->NiosIIProcessor,在弹出的对话框中间选择第一个
NiosII/e,表示economy,最小的NIOSII核心。
下面的ResetVector和ExceptionVector都选择onchip_men,即刚才添加的片上RAM的名称。
其它的都保留默认设置即可。
点击Finish添加CPU核。
4、添加IO控制器。
双击Peripherals->MicrocontrollerPeripherals->PIO(ParallelI/O),保持默认设置即可,表示有8个输出用IO口,分别控制开发板上的LCD的数据存储(LCD_DATA[7..0])
(然后依次添加LCD_EN、LCD_RS、LCD_RW、LCD_ON、LCD_BLON各一位作为IO口)
5、然后进行自行分配地址,自行分配中断号。
一切就绪,点击General,进行编译。
编译好以后退出,进入Quartus界面,然后运行TCL脚本,编译,等待……编译好以后,给其分配引脚,如下图所示:
6、综合与布局布线,提交综合与布局布线报告如下:
7、选择JTAG的方式将程序下载到FPGA中。
三、软件开发
1、打开NIOSII9.0IDE后,按快捷键Ctrl+b编译程序,等待编译……
编译好以后,我们再来看system.h文件。
可以看到UART部分的代码了,如下:
2、下面,我们开始编写软件程序,首先是修改inc.h。
大概截图如下所示:
这个结构体体中包括5个共用体,这5个共用体对应UART的5个寄存器,我们来看看这5个寄存器,下图所示:
这个图中的
(1)有一个说明,就是说第7,8位根据设置的数据位有所改发,我们设置数据位8位,所以7,8位不前6为性质相同。
这个结构体的内容是按上图的寄存器顺序来定义的,(因为endofpacket没用到,所以在结构体中没有定义)这样在操作过程中就可以实现相应的偏移量(offset)。
在这个结构体中,我们嵌套了5个共有体,在共用体中,我们又使用了结构体和位域。
其实,这样做的目的就是想对寄存器的每一位进行单独的控制,同时也可以实现这个寄存器的整体控制。
3、接着建立编写uart.h文件:
4、建立编写main.c如下:
5、将软件下载到FPGA实验板上
6、实验结果:
在串口软件上实现字符串a/A~z/Z的发收,非字符返回error,同时在lcd上显示。
3.1内容要求
报告应该包含目录、正文、总结(心得体会)。
其中正文应该涵盖1.1节基本要求。
3.2报告排版要求
报告一级标题采用黑体四号,段前段后一行,行间距20磅。
二级标题采用黑体小四号,段前段后一行,行间距20磅。
正文采用宋体小四号,段前1行端后0行,行间距20磅。
3课程设计总结
首先感谢老师给我们机会更好地学习SoPc。
通过本次SoPC课程设计我学到很多知识,对之前SoPc中的有些问题也解决了。
与此同时,我也对QuartusII和NiosII9.0IDE软件也有了深刻的理解以及应用,也更好地理解了SoPc的工作原理,更深切的了解到软硬件相结合的好处与功能实现,希望在以后的SoPc学习中更进一步!
!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SOPC 课程设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)