sopc课程设计
- 格式:doc
- 大小:182.69 KB
- 文档页数:8
SoPC课程设计(报告)题目:串口通信控制学院:系部:专业:班级:学生姓名:指导教师:起止时间: 2014年6月16日——2014年6月27日1课程设计要求1.1 基本要求课程设计要求所有题目采用Quartus II 工具提供的图形输入或者VerilogHDL语言输入方式作为电路设计工具,在NiosII上采用C语言实现编程,自定向下正向设计方法,先设计硬件系统,再进行软件编程,能够生成正确的FPGA下载代码和NiosII执行的软件代码。
硬件功能仿真和时序仿真采用第三方工具(建议为:modelsim),综合与布局布线工具为:Quartus II,SOPC Builder建立软件运行环境,具体要求为: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的Quartus II和Nios II IDE。
3课程设计过程及设计方案一、设计方案1、通过UART实现串口通信;(1) 建立UART IP 核;(2) 在软核中用结构体实现收发数据。
sopc课程设计计数器一、教学目标本课程旨在让学生了解和掌握SOPC(System On Programmable Chip)课程设计的基本知识和技能,通过计数器的设计和实现,使学生能够熟练运用FPGA (Field Programmable Gate Array)器件进行数字电路设计。
具体目标如下:1.知识目标:(1)了解SOPC的基本概念和应用领域;(2)掌握FPGA器件的结构和工作原理;(3)熟悉VHDL(Very High Speed Integrated Circuit Hardware Description Language)语言的基本语法和常用语句;(4)掌握计数器的设计方法和步骤。
2.技能目标:(1)能够运用VHDL语言编写简单的数字电路模块;(2)能够使用FPGA器件实现计数器的设计和验证;(3)具备分析和解决数字电路设计中问题的能力。
3.情感态度价值观目标:(1)培养学生对电子技术的兴趣和热情;(2)培养学生团队合作精神和自主学习能力;(3)培养学生遵循工程伦理,对设计成果负责的态度。
二、教学内容本课程的教学内容主要包括以下几个部分:1.SOPC基本概念和应用领域;2.FPGA器件的结构和工作原理;3.VHDL语言的基本语法和常用语句;4.计数器的设计方法和步骤;5.FPGA器件的配置和编程方法。
具体安排如下:(1)第1-2课时:介绍SOPC基本概念和应用领域,让学生了解SOPC技术的发展趋势和前景;(2)第3-4课时:讲解FPGA器件的结构和工作原理,使学生熟悉FPGA器件的基本特性;(3)第5-6课时:介绍VHDL语言的基本语法和常用语句,培养学生运用VHDL语言进行数字电路设计的能力;(4)第7-8课时:讲解计数器的设计方法和步骤,让学生掌握计数器的设计和实现;(5)第9-10课时:介绍FPGA器件的配置和编程方法,使学生能够独立完成数字电路设计的验证。
三、教学方法为了提高教学效果,本课程将采用以下教学方法:1.讲授法:教师讲解基本概念、原理和方法,使学生掌握相关知识;2.案例分析法:通过分析实际案例,使学生了解计数器设计的具体过程;3.实验法:让学生动手实践,完成计数器的设计和验证,提高实际操作能力;4.讨论法:鼓励学生积极参与课堂讨论,培养团队合作精神和独立思考能力。
赣南师院物理与电子信息学院SOPC技术课程设计报告书专业班级:09电信本学生姓名:胡雯莹学号:090802054指导教师:管立新设计时间:2011.12.30基于SOPC技术实现数字闹钟一、课题简介SOPC技术是美国Altrea公司于2000年最早提出的,并同时推出了相应的开发软件Quartus II。
SOPC是基于FPGA解决方案的SOC,与ASIC的SOC解决方案相比,SOPC系统及其开发技术具有更多的特色,构成SOPC的方案有多种途径,我们主要用到的是:基于FPGA嵌入IP硬核的SOPC 系统1.基于FPGA嵌入IP硬核的SOPC系统即在FPGA中预先植入嵌入式系统处理器。
目前最为常用的嵌入式系统大多采用了含有ARM 的32位知识产权处理器核的器件。
尽管由这些器件构成的嵌入式系统有很强的功能,但为了使系统更为灵活完备,功能更为强大,对更多任务的完成具有更好的适应性,通常必须为此处理器配置许多接口器件才能构成一个完整的应用系统。
如除配置常规的SRAM、DRAM、Flash外,还必须配置网络通信接口、串行通信接口、USB接口、VGA接口、PS/2接口或其他专用接口等。
这样会增加整个系统的体积、功耗,而降低系统的可靠性。
但是如果将ARM或其他知识产权核,以硬核方式植入FPGA中,利用FPGA中的可编程逻辑资源和IP软核,直接利用FPGA中的逻辑宏单元来构成该嵌入式系统处理器的接口功能模块,就能很好地解决这些问题。
2.基于FPGA嵌入IP软核的SOPC系统这种SOPC系统是指在FPGA中植入软核处理器,如:NIOS II核等。
用户可以根据设计的要求,利用相应的EDA工具,对NIOS II及其外围设备进行构建,使该嵌入式系统在硬件结构、功能特点、资源占用等方面全面满足用户系统设计的要求。
二、数字闹钟的工作原理及设计过程1、工作原理数字闹钟组成结构数字闹钟一般由振荡器、分频器、计数器、译码器、显示器及部分扩展电路等组成。
上海电力学院课程设计(大型作业)任务书(2009 /2010 学年第二学期)课程名称SOPC课程设计课程代码 1307132 院(系)计信学院专业电子信息工程班级学生时间19/20周一、设计目的本课程的授课对象是电子信息工程专业本科生,是电子类专业的一门重要的实践课程,是理论与实践相结合的重要环节。
本课程作为《SOPC技术与应用》的后续实践课程,有助于增强学生对SOPC技术的理解,掌握SOPC设计方法及调试能力,为今后从事现代电路设计与调试工作打下扎实的基础。
二、设计内容、要求及组织形式本课程要求学生在掌握FPGA技术和SOPC技术的基础上,以QuartusII、SOPC Builder和Nios II IDE等软件为工具,分别完成SOPC的硬件模块设计和软件模块设计。
设计题目:LCD日历电子钟、多功能数字钟、交通信号灯和抢答器。
采用一人一题的方式,课堂形式则采用讲授与上机相结合。
三、设计进度安排(时间及地点)地点:计信学院实验室304时间:19-20周第1天分析各设计的工作原理、设计目的第2天硬件模块设计第3天软件流程图设计,整理设计思路第4天对软件模块进行划分第5-8天完成模块的代码编写、调试、运行第9天报告撰写第10天答辩下面给出四个任务的具体要求。
任务一:LCD日历电子钟1.实验任务及要求(1)日历电子钟的显示:用NiosII DE2开发板实现电子钟功能。
用LCD显示电子钟的日期和时间。
LCD分两行显示,第一行显示年、月和日(如:20090201);第二行显示时、分和秒(如16:20:30)。
(2)日历电子钟的修改:用输入按钮KEY[0]来控制LCD行修改,同时让DE2板上的绿色发光二级管LEDG3的亮与灭来表示这个选择。
当KEY[0]按下一次后,LEDG3亮,可以修改年、月和日的数字;再按一次KEY[0]后,LEDG3灭,可以修改时、分和秒的数字。
另外用输入按钮KEY[3]来控制日期和时间的修改,当处于日期修改方式时,每按动一次KEY[3]按钮,依次更换“年”、“月”和“日”的修改。
SOPC嵌入式系统基础教程课程设计课程设计背景SOPC (System on a Programmable Chip) 是将数字系统设计的各个模块集成到一个芯片上的技术,可以利用 FPGA 技术实现。
使用SOPC 技术设计嵌入式系统时,可以将各种外设控制器集成到可编程器件中,从而完成完整的嵌入式系统。
随着现代物联网技术的快速发展和普及,嵌入式系统应用场景越来越广泛,嵌入式系统的开发工程师越来越受到关注。
因此,对于计算机科学专业的学生来说,掌握 SOPC 嵌入式系统的基础知识和技能也变得非常重要。
本课程设计旨在通过实践操作,让学生了解 SOPC 嵌入式系统的基本概念和应用,提高学生对嵌入式系统的设计能力。
课程设计内容实验环境准备软件环境1.Quartus II 集成开发环境2.ModelSim 集成仿真环境硬件环境采用 Altera 公司推出的 DE1-SoC 开发板,该开发板主要包括以下硬件资源:1.Cyclone V SoC FPGA 设备,包括 FPGA 逻辑资源和 ARM处理器资源2.DDR3 SDRAM 存储器3.VGA 视频输出端口4.以太网口5.GPIO 端口6.SD 卡口7.麦克风输入口8.音频输出端口实验流程本课程设计共包括两个实验设计,分别为:实验一:利用 Quartus II + Nios II + SOPC 技术搭建一个包含I/O 和 LED 控制的简单系统1.学习 Nios II 基本概念,如指令集架构、寄存器组、内存、中断等。
2.学习 Quartus II + Nios II IDE 集成开发系统的使用,包括类型定义、信号定义、仿真和调试功能。
3.建立一个简单的 SOPC 系统,包括 Nios II 处理器、I/O控制,用于控制 VGA 显示器中的 LED 灯。
4.用 C 语言编写应用程序来控制 LED 灯,并将程序下载到板子上,观察 LED 灯在 VGA 显示器中的状态。
第一章EDA技术综合应用设计基础1.1 EDA技术综合应用的形式随着EDA技术的深入发展和EDA技术软硬件性能价格比的不断提高,EDA技术的应用将向广度和深度两个方面发展。
根据利用EDA技术所开发的产品的最终主要硬件构成来分,作者认为,EDA技术的应用发展将表现为如下几种形式:(1) CPLD/FPGA系统:使用EDA技术开发CPLD/FPGA,使自行开发的CPLD/FPGA作为电子系统、控制系统、信息处理系统的主体。
(2) ―CPLD/FPGA+MCU‖系统:综合应用EDA技术与单片机技术,将自行开发的―CPLD/FPGA+MCU‖作为电子系统、控制系统、信息处理系统的主体。
(3) ―CPLD/FPGA+专用DSP处理器‖系统:将EDA技术与DSP专用处理器配合使用,用―CPLD/FPGA+专用DSP处理器‖构成一个数字信号处理系统的整体。
(4) 基于FPGA实现的现代DSP系统:基于SOPC(a System on a Programmable Chip)技术、EDA技术与FPGA技术实现方式的现代DSP系统。
(5) 基于FPGA实现的SOC片上系统:使用超大规模的FPGA实现的,内含1个或数个嵌入式CPU或DSP,能够实现复杂系统功能的单一芯片系统。
(6) 基于FPGA实现的嵌入式系统:使用CPLD/FPGA实现的,内含嵌入式处理器,能满足对象系统要求的特定功能的,能够嵌入到宿主系统的专用计算机应用系统。
1.2 EDA技术综合应用的设计方法与建模1.2.1 分析方法传统的电路设计方法都是自底向上进行设计的,也就是首先确定可用的元器件,然后根据这些器件进行逻辑设计,完成各模块后进行连接,最后形成系统。
在基于EDA技术的系统设计的最重要环节——在系统的基本功能或行为级上对设计的产品进行描述和定义时,我们采用自顶向下分析,自底向上设计的方法。
所谓―自顶向下分析‖,就是指将数字系统的整体逐步分解为各个子系统和模块,若子系统规模较大,则还需将子系统进一步分解为更小的子系统和模块,层层分解,直至整个系统中各子系统关系合理,并便于逻辑电路级的设计和实现为止。
摘要时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,人们对它的功能又提出了新的要求,怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。
本人设计的产品为24小时制的多功能数字钟,具有时钟时间设置、闹钟时间设置、闹钟开、闹钟关等功能,数字显示小时、分钟、秒,闹钟就绪灯,蜂鸣器。
本论文针对上述情况,在设计中采用EDA自动化设计技术。
以计算机为基本平台,以硬件描述语言为系统逻辑描述表达方式,以EDA工具作为开发环境,以大规模可编程逻辑器件为设计载体,以专用集成电路ASIC为目标器件,以电子系统设计为应用方向的电子产品自动化设计过程。
这样的设计方法,大大的缩短了设计的周期,降低了设计成本。
设计出来的数字钟具有功能多、体积小、功耗低的特点。
在论文中主要涉及的内容有:1、介绍Verilog HDL语言。
2、介绍在QuartusII软件上对数字钟的设计。
3、介绍系统仿真结果和硬件验证与分析。
4、对整个设计系统进行总结。
关键词: 电子设计自动化 Verilog HDL 可编程逻辑器件目录摘要............................................................................. 错误!未定义书签。
第1章绪论 (3)第2章Verilog HDL语言 (5)2.1 Verilog HDL语言简介 (5)2.2 Verilog HDL主要特点 (5)2.3 Verilog HDL语言开发软件---QuartusⅡ (5)第3章数字钟Verilog HDL的设计 (7)3.1设计方案及工作原理 (7)3.1.1数字钟设计原理 (7)3.1.2 数字钟功能 (7)3.2 数字钟钟控定时器的基本组成 (8)3.2.1 D触发器的设计 (8)3.2.2数据选择器的设计 (9)3.2.3 计数器的设计 (9)3.2.4 数据分配器 (12)3.2.5译码器 (13)3.2.6分频器 (13)3.2.7闹时器 (13)3.2.8 报时器 (15)3.3 数字钟原理图 (17)第4章软件调试 (17)结论.......................................................................................................... 错误!未定义书签。
目录一摘要 (3)二课题简介 (3)三实验总体设计 (6)四数字秒表的工作原理及设计过程 (7)五设计过程 (19)六结论 (24)七参考文献 (25)一、摘要目前数字电子技术已经广泛地应用于计算机,自动控制,电子测量仪表,电视,雷达,通信等各个领域。
随着信息技术和网络技术的高速发展,嵌入式产品日益广泛地渗透到日常生活、科学研究和军事技术等领域。
人们在日常生活中,有很多时候要精确地计算时间,但往往因为人为因素造成人们不愿意看到的误差。
秒表是日常生活中比较常用的精确计时工具,特别是在体育竞技以及生产科研中,跳动精确的秒表更是有着不可替代的作用。
过去机械秒表的设计制作极为复杂,而且成本高、不稳定给使用者带来了不少的困扰。
但是随着电子技术的飞速发展,电子秒表的出现彻底改变了这一局面,电子秒表以其成本低廉、工作稳定、走时精确、操作简单在人类的工作生活中得到了广泛的应用。
秒表的出现,解决了传统的由于人为因素造成的误差和不公平性。
本设课程设计是主要采用sopc技术基于FPGA的数字秒表的设计,利用Verilog HDL语言和Quartus II 软件以及FPGA实验操作平台来实现的。
本论文的重点是用硬件语言Verilog HDL 来描述数字秒表,偏重于软件设计。
大致内容是首先简单介绍了EDA的现状和前景, Verilog HDL 语言特点,应用平台FPGA,之后阐述了数字秒表的设计思想和大体的设计流程,最后进入本设计的核心设计部分,用Verilog HDL 语言设计数字秒表电路,着重对各个模块进行了详细的分析和说明。
【关键词】Verilog HDL 语言;Quartus II 软件;数字秒表;SOPC技术二、课题简介SOPC技术是美国Altrea公司于2000年最早提出的,并同时推出了相应的开发软件Quartus II。
SOPC是基于FPGA解决方案的SOC,与ASIC的SOC解决方案相比,SOPC系统及其开发技术具有更多的特色,构成SOPC的方案有多种途径,我们主要用到的是:基于FPGA嵌入IP硬核的SOPC系统2.3基于FPGA嵌入IP硬核的SOPC系统即在FPGA中预先植入嵌入式系统处理器。
sopc拔河课程设计一、课程目标知识目标:1. 让学生理解SOPC(System On Programmable Chip)的基本概念,掌握其组成和原理。
2. 学习并掌握SOPC拔河比赛的基本规则,了解比赛中所涉及的物理知识和电子技术。
3. 掌握运用SOPC技术进行拔河比赛数据采集、处理和分析的方法。
技能目标:1. 培养学生运用所学SOPC知识,设计并实现一个简单的拔河比赛系统。
2. 提高学生动手实践能力,学会使用相关编程语言和工具对SOPC进行编程和调试。
3. 培养学生团队协作和沟通能力,能在项目中进行有效分工与合作。
情感态度价值观目标:1. 激发学生对电子技术和物理知识的学习兴趣,培养创新意识和实践精神。
2. 培养学生面对挑战和困难时,保持积极的态度,勇于尝试和解决问题。
3. 引导学生认识到科技在生活中的应用,体会科技带给人类生活的便利,增强社会责任感和使命感。
课程性质:本课程为实践性强的学科课程,结合物理、电子技术等多学科知识,以项目式教学方式开展。
学生特点:学生具备一定的物理知识和编程基础,对新鲜事物充满好奇,喜欢动手实践。
教学要求:注重理论与实践相结合,充分调动学生的主观能动性,培养学生的创新能力和团队协作精神。
在教学过程中,关注学生的个体差异,提供个性化指导,确保学生能够达到预定的学习目标。
通过课程学习,使学生能够将所学知识运用到实际项目中,提高解决实际问题的能力。
二、教学内容1. SOPC基本概念:介绍SOPC的定义、发展历程、基本组成和优势特点。
相关教材章节:第一章《可编程系统概述》2. SOPC拔河比赛规则与物理知识:讲解拔河比赛的基本规则,分析比赛中所涉及的力学、电磁学等物理知识。
相关教材章节:第二章《物理基础》3. SOPC拔河比赛系统设计:学习如何设计一个基于SOPC的拔河比赛系统,包括硬件设计、软件编程和系统调试。
相关教材章节:第三章《硬件设计与实现》、第四章《软件编程与调试》4. 数据采集、处理与分析:教授如何运用SOPC技术对拔河比赛数据进行采集、处理和分析,提取有价值的信息。
SOPC课程设计实验报告基于SOPC的警示灯设计2013电子信息工程3班李婕20134557罗丹妮20134563一、设计目的1、熟悉掌握SOPC的基本流程2、设计一个警示灯并满足基本要求3、通过设计发现问题并解决二、设计设备1、硬件:PC机、SOPC-NIOS II EDA/SOPC系统开发平台2、软件:QUARTUS II、SOPC Builder、NIOS II ID E三、设计内容•初始状态为红灯(LED2)熄灭,绿灯(LED1)点亮,数码管显示为0。
•当按键按下,红灯(LED2)闪烁,绿灯(LED1)熄灭,同时蜂鸣器响起,数码管开始倒计时9S,此状态持续时间为9s。
•9s后,恢复初始状态。
四、设计步骤1、使用Quartus II建立一个工程文件和顶层文件;2、使用SOPC Builder建立一个简单Nios II硬件系统1)启动SOPC Builder2)指定目标FPGA3)添加NiosII内核及其他外设A、添加NiosII、SRAM、JTAG-UART、Avalon总线的I P核B、添加一个2位的输入型PIO作为按键keyC、添加两个1位的输出型PIO作为 led1及led2的输出端口D、添加一个1位的输出型PIO作为蜂鸣器的输入端口AE、添加一个3位的输出型PIO作为数码管的位选selF、添加一个8位的输出型PIO作为数码管的段选dat4)指定基地址和中断优先级5)设置NiosII复位和异常地址6) 编译生成NiosII系统SOPC Builder行程图如下:3、在Quartus II中建立一个蜂鸣器1)用VHDL语言编写蜂鸣器程序2)编译成功后Creat symbol,生成Project sing4、在Quartus II中编译Nios II硬件系统并生成配置文件1)在Quartus II加入Nios II系统符号到顶层文件2)给各端口加入输入输出引脚,并重命名3)设置参数4)编译顶层文件5)分配管脚6)再次编译5、在Nios II IDE中建立C/C++工程,编写用户程序6、编译用户程序7、下载.SOF至FPGA,运行程序,观察结果五、设计程序蜂鸣器程序(VHDL):LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sing1 ISPORT(CLK:IN STD_LOGIC;p:IN STD_LOGIC;-- DIGIT:BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);SPEAKER:OUT STD_LOGIC);END ENTITY;ARCHITECTURE SONG OF sing1 ISSIGNAL DRIVER,ORIGIN:STD_LOGIC_VECTOR(12 DOWNTO 0); SIGNAL COUNTER:INTEGER RANGE 0 TO 140;SIGNAL COUNTER1:INTEGER RANGE 0 TO 3;SIGNAL COUNTER2:INTEGER RANGE 1 TO 10000000; SIGNAL DIGIT :STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL COUNT :STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL CARRIER,CLK_4MHZ,CLK_4HZ:STD_LOGIC;BEGINPROCESS(CLK)BEGINIF CLK'EVENT AND CLK='1' THENIF COUNTER1=1 THEN CLK_4MHZ<='1';COUNTER1<=2;ELSIF COUNTER1=3 THEN CLK_4MHZ<='0';COUNTER1<=0;ELSE COUNTER1<=COUNTER1+1;END IF;IF COUNTER2=5000000 THEN CLK_4HZ<='1';COUNTER2<=5000001;ELSIF COUNTER2=10000000 THEN CLK_4HZ<='0';COUNTER2<=1;ELSE COUNTER2<=COUNTER2+1;END IF;END IF;END PROCESS;PROCESS(CLK_4MHZ)BEGINIF CLK_4MHZ'EVENT AND CLK_4MHZ='1' THEN IF DRIVER="1111111111111"THENCARRIER<='1';DRIVER<=ORIGIN;ELSEDRIVER<=DRIVER+1;CARRIER<='0';END IF;END IF;END PROCESS;PROCESS(CARRIER)BEGINif(p='1')thenIF CARRIER'EVENT AND CARRIER='1' THEN COUNT<=COUNT+1;IF COUNT="00"THENSPEAKER<='1';ELSESPEAKER<='0';END IF;END IF;end if;END PROCESS;PROCESS(CLK_4HZ)BEGINIF CLK_4HZ'EVENT AND CLK_4HZ='1' THEN IF COUNTER=140 THENCOUNTER<=0;ELSE COUNTER<=COUNTER+1;END IF;END IF;CASE COUNTER ISWHEN 2 =>DIGIT<="0000011"; WHEN 3 =>DIGIT<="0000011"; WHEN 4 =>DIGIT<="0000101"; WHEN 5 =>DIGIT<="0000101"; WHEN 6 =>DIGIT<="0000101"; WHEN 7 =>DIGIT<="0000110"; WHEN 8 =>DIGIT<="0001000"; WHEN 9 =>DIGIT<="0001000"; WHEN 10 =>DIGIT<="0001000"; WHEN 11 =>DIGIT<="0010000"; WHEN 12 =>DIGIT<="0000110"; WHEN 13 =>DIGIT<="0001000"; WHEN 14 =>DIGIT<="0000101"; WHEN 15 =>DIGIT<="0000101"; WHEN 16 =>DIGIT<="0101000"; WHEN 17 =>DIGIT<="0101000"; WHEN 18 =>DIGIT<="0101000"; WHEN 19 =>DIGIT<="1000000"; WHEN 20 =>DIGIT<="0110000"; WHEN 21 =>DIGIT<="0101000"; WHEN 22 =>DIGIT<="0011000"; WHEN 23 =>DIGIT<="0101000"; WHEN 24 =>DIGIT<="0010000"; WHEN 25 =>DIGIT<="0010000"; WHEN 26 =>DIGIT<="0010000"; WHEN 27 =>DIGIT<="0010000"; WHEN 28 =>DIGIT<="0010000"; WHEN 29 =>DIGIT<="0010000"; WHEN 30 =>DIGIT<="0000011"; WHEN 31 =>DIGIT<="0000000"; WHEN 32 =>DIGIT<="0010000"; WHEN 33 =>DIGIT<="0010000"; WHEN 34 =>DIGIT<="0010000"; WHEN 35 =>DIGIT<="0011000"; WHEN 36 =>DIGIT<="0000111"; WHEN 37 =>DIGIT<="0000111"; WHEN 38 =>DIGIT<="0000110"; WHEN 39 =>DIGIT<="0000110"; WHEN 40 =>DIGIT<="0000101"; WHEN 41 =>DIGIT<="0000101"; WHEN 42 =>DIGIT<="0000101"; WHEN 43 =>DIGIT<="0000110";WHEN 46 =>DIGIT<="0010000"; WHEN 47 =>DIGIT<="0010000"; WHEN 48 =>DIGIT<="0000011"; WHEN 49 =>DIGIT<="0000011"; WHEN 50 =>DIGIT<="0001000"; WHEN 51 =>DIGIT<="0001000"; WHEN 52 =>DIGIT<="0000110"; WHEN 53 =>DIGIT<="0000101"; WHEN 54 =>DIGIT<="0000110"; WHEN 55 =>DIGIT<="0001000"; WHEN 56 =>DIGIT<="0000101"; WHEN 57 =>DIGIT<="0000101"; WHEN 58 =>DIGIT<="0000101"; WHEN 59 =>DIGIT<="0000101"; WHEN 60 =>DIGIT<="0000101"; WHEN 61 =>DIGIT<="0000101"; WHEN 62 =>DIGIT<="0000101"; WHEN 63 =>DIGIT<="0000101"; WHEN 64 =>DIGIT<="0011000"; WHEN 65 =>DIGIT<="0011000"; WHEN 66 =>DIGIT<="0011000"; WHEN 67 =>DIGIT<="0101000"; WHEN 68 =>DIGIT<="0000111"; WHEN 69 =>DIGIT<="0000111"; WHEN 70 =>DIGIT<="0010000"; WHEN 71 =>DIGIT<="0010000"; WHEN 72 =>DIGIT<="0000110"; WHEN 73 =>DIGIT<="0001000"; WHEN 74 =>DIGIT<="0000101"; WHEN 75 =>DIGIT<="0000101"; WHEN 76 =>DIGIT<="0000101"; WHEN 77 =>DIGIT<="0000101"; WHEN 78 =>DIGIT<="0000101"; WHEN 79 =>DIGIT<="0000101"; WHEN 80 =>DIGIT<="0000011"; WHEN 81 =>DIGIT<="0000101"; WHEN 82 =>DIGIT<="0000011"; WHEN 83 =>DIGIT<="0000011"; WHEN 84 =>DIGIT<="0000101"; WHEN 85 =>DIGIT<="0000110"; WHEN 86 =>DIGIT<="0000111"; WHEN 87 =>DIGIT<="0010000";WHEN 90 =>DIGIT<="0000110"; WHEN 91 =>DIGIT<="0000110"; WHEN 92 =>DIGIT<="0000110"; WHEN 93 =>DIGIT<="0000110"; WHEN 94 =>DIGIT<="0000101"; WHEN 95 =>DIGIT<="0000110"; WHEN 96 =>DIGIT<="0001000"; WHEN 97 =>DIGIT<="0001000"; WHEN 98 =>DIGIT<="0001000"; WHEN 99 =>DIGIT<="0010000"; WHEN 100=>DIGIT<="0101000"; WHEN 101=>DIGIT<="0101000"; WHEN 102=>DIGIT<="0101000"; WHEN 103=>DIGIT<="0011000"; WHEN 104=>DIGIT<="0010000"; WHEN 105=>DIGIT<="0010000"; WHEN 106=>DIGIT<="0011000"; WHEN 107=>DIGIT<="0010000"; WHEN 108=>DIGIT<="0001000"; WHEN 109=>DIGIT<="0001000"; WHEN 110=>DIGIT<="0000110"; WHEN 111=>DIGIT<="0000101"; WHEN 112=>DIGIT<="0000011"; WHEN 113=>DIGIT<="0000011"; WHEN 114=>DIGIT<="0000011"; WHEN 115=>DIGIT<="0000011"; WHEN 116=>DIGIT<="0001000"; WHEN 117=>DIGIT<="0001000"; WHEN 118=>DIGIT<="0000110"; WHEN 119=>DIGIT<="0001000"; WHEN 120=>DIGIT<="0000110"; WHEN 121=>DIGIT<="0000011"; WHEN 122=>DIGIT<="0000011"; WHEN 123=>DIGIT<="0010000"; WHEN 124=>DIGIT<="0000011"; WHEN 125=>DIGIT<="0000101"; WHEN 126=>DIGIT<="0000110"; WHEN 127=>DIGIT<="0001000"; WHEN 128=>DIGIT<="0000101"; WHEN 129=>DIGIT<="0000101"; WHEN 130=>DIGIT<="0000101"; WHEN 131=>DIGIT<="0000101";WHEN 134=>DIGIT<="0000101"; WHEN 135=>DIGIT<="0000101"; WHEN 136=>DIGIT<="0000000"; WHEN 137=>DIGIT<="0000000"; WHEN 138=>DIGIT<="0000000"; WHEN 139=>DIGIT<="0000000"; WHEN OTHERS=>DIGIT<="0000000";END CASE;CASE DIGIT ISWHEN "0000011"=>ORIGIN<="0100001001100";WHEN "0000101"=>ORIGIN<="0110000010001";WHEN "0000110"=>ORIGIN<="0111000111110";WHEN "0000111"=>ORIGIN<="1000000101101";WHEN "0001000"=>ORIGIN<="1000100010001";WHEN "0010000"=>ORIGIN<="1001010110010";WHEN "0011000"=>ORIGIN<="1010000100101";WHEN "0101000"=>ORIGIN<="1011000001000";WHEN "0110000"=>ORIGIN<="1011100011110";WHEN "1000000"=>ORIGIN<="1100010001000";WHEN OTHERS=>ORIGIN<="1111111111111";END CASE;END PROCESS;END SONG;警示灯总程序:#include <stdio.h>#include <sys/unistd.h>#include <io.h>#include <string.h>#include "system.h"#include "altera_avalon_pio_regs.h"#include "alt_types.h"#include "sys/alt_irq.h"int num;static void Button_ISR_Init(void);static void Button_Irq_Handler(void* context,alt_u32 id);alt_u8 segtab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~9段码static void display(int num);//按键初始化static void Button_ISR_Init(void){IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEY_BASE,0xff); //允许8个按键中断IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_BASE,0); //清除中断标志寄存器alt_irq_register(KEY_IRQ,NULL,Button_Irq_Handler); //注册中断}static void display(int num){IOWR_ALTERA_AVALON_PIO_DATA(SEL_BASE,0); //数码管位选IOWR_ALTERA_AVALON_PIO_DATA(DAT_BASE,segtab[num]); //显示倒计时usleep(1000);}/*------------------------------------------------------------------***********************按键中断处理函数*****************************-----------------------------------------------------------------*/static void Button_Irq_Handler(void* context,alt_u32 id){int i;for(i=0;i<9;i++){num=9-i;display(num);IOWR_ALTERA_AVALON_PIO_DATA(A_BASE, 1);//蜂鸣器响起IOWR_ALTERA_AVALON_PIO_DATA(LED1_BASE, 0);IOWR_ALTERA_AVALON_PIO_DATA(LED2_BASE, 1);usleep(500000);IOWR_ALTERA_AVALON_PIO_DATA(LED2_BASE, 0);usleep(500000);}IOWR_ALTERA_AVALON_PIO_DATA(A_BASE, 0);//蜂鸣器关闭IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_BASE,0);num=0;display(num);}int main(void){printf("Begin!\n");Button_ISR_Init(); //按键中断初始化while(1){usleep(100000);IOWR_ALTERA_AVALON_PIO_DATA(LED1_BASE, 1);IOWR_ALTERA_AVALON_PIO_DATA(LED2_BASE, 0);num=0;display(num);}return 0;}六、设计结果按键未按下时,处于初始状态:LED1亮,LED2灭,数码管显示为0,蜂鸣器未启动;按键按下之后,LED1灭,LED2闪烁,数码管进入9秒倒计时并且蜂鸣器响;9秒后恢复初始状态。
SoPC课程设计(报告)题目:液晶控制显示器
学院:电子工程学院
系部:微电子学系
专业:集成电路设计与集成系统
班级: 1002 学生姓名:曹松松
指导教师:曾泽沧
起止时间: 2013年6月17日——2013年6月28日
目录
1 课程设计要求 (2)
基本要求 (2)
2 实验使用平台 (2)
3 题目:选题2 (2)
4 课程设计总结 (5)
5 附件 (5)
1课程设计要求
基本要求
课程设计要求所有题目采用Quartus II 工具提供的图形输入或者VerilogHDL语言输入方式作为电路设计工具,在NiosII上采用C语言实现编程,自定向下正向设计方法,先设计硬件系统,再进行软件编程,能够生成正确的FPGA下载代码和NiosII执行的软件代码。
硬件功能仿真和时序仿真采用第三方工具(建议为:modelsim),综合与布局布线工具为:Quartus II,SOPC Builder建立软件运行环境,具体要求为:1)根据课设题目,进行总体设计方案(10分);
2)硬件电路顶层设计、模块划分、引脚定义(10分);
3)电路设计及NiosII设计,提交电路设计源代码或电路图(10分);
4)综合与布局布线,提交综合与布局布线报告(10分);
5)FPGA下载代码和引脚分布(10分);
6)软件总体设计及画出流程图(10分);
7)程序设计,提交程序代码(10分);
8)程序编译下载及仿真调试(10分)。
2实验使用平台
实验平台使用Altera的DE2开发板,开发工具使用Altera的Quartus II和Nios II IDE。
3 题目:选题2
在字符型液晶显示器上移动显示
“XIAN UNIVERSITY POST AND TELECOMMUNICATIONS YOUR NAME 2013-6”,要求FPGA 设计硬件,内嵌NiosII,液晶显示采用软件实现。
1)根据课设题目,进行总体设计方案;(10分)
此次sopc课程设计选题2,题目相对比较简单。
大体分为硬件搭建跟软件编程两块。
由本次设计题目比较简单,所使用模块较少,设计方案及模块划分如下:
2)硬件电路顶层设计、模块划分、引脚定义;(10分)
a.硬件顶层设计:使用verilog语言编写顶层(见附件)
b.模块划分:
Nios核+RAM+lcd模块+暂停开关SW1
3)综合与布局布线,提交综合与布局布线报告(10分)
4)FPGA下载代码(见附件)(10分)
5)软件总体设计及画出流程图;(10分)
A.软件总体设计:
Lcd1602驱动+开关状态处理+字符流动花型
B.流程图:
7)程序设计,提交程序代码;(10分)
软件程序设计代码:显示内容
char TextL1[60]="XIAN UNIVERSITY POST AND TELECOMMUNICATIONS ";
char TextL2[60]=" YOUR NAME 2013-6 11#506 SYSTEMONCHIP ";
char TextL3[60]="XIAN UNIVERSITY ";
char TextL4[60]="POST AND TELECOM";
char TextL5[60]=" --MUNICATIONS ";
char TextL6[60]="YOUR NAME 2013-6";
char TextL7[60]="^_^*caosong-sopc";
8)程序编译下载及仿真调试;(10分)
硬件:
①使用quartusⅡ软件进行硬件模块调试,排除所有错误
②编译硬件模块生成可下载文件
③下载硬件
软件:
①使用 Eclipse软件进行软件C语言编程调试,排除所有错误
②编译生成可下载文件
③下载软件
4 课程设计总结
通过本次SoPC课程设计,我真实地体验了FPGA的sopc设计的流程以及开发技巧,兼顾硬件语言描述与c语言联合编程。
不仅仅是一次课程设计作业,在实践的过程中,真正体验到FPGA的强大与优势,看到了它广阔的前景。
课程设计中也遇到了诸多问题,在我和同学以及百度的努力下解决了几乎所有问题,解决问题的同时也是一个学习的过程,我在其中受益良多。
由于我选择的题目相对简单,所以没一周时间,我已经完成。
主要是对PIO的操作,而对于定时器与UART的中断问题还是不甚了解,还得继续努力。
遇到的问题及解决:
A.每次添加硬件部分都必须重新编译,重新建软件工程,否则软硬件不搭配
B.断电一次后,一般都必须进行软件下载刷新:删除生成的Hardware并重新进行软件编译重建生成下载文件
C.板子无法进行下载时,请进行如下检查:
1>硬件模块搭建是否存在问题,管脚是否配置正确
2>找到run列表进行下载模式的刷新直到可以下载
3>新建软件工程重新编译下载
4>更换usb接口,保证接口正常
5>刚安装完成要特别注意板子驱动的安装是否完成,是否正确
6>注意板子复位是使用按键key还是开关switch,一般建议使用key(不按时永远为高电平,不复位);如果使用switch,要特别注意开关处于高电平,否则无法下载程序
D.保持正确的程序书写风格,容易查找修改,写上必要的注释
E.使用按键进行状态判断时,由于程序是串行执行的,所以按键识别需要等到执行到按键扫描时才会有效,相当于按键的软件消抖,如果中间程序比较长并伴有延时,则需要按键长按,否则很难识别到
5 附件
①硬件工程及顶层代码
②软件工程及C代码。