- 23
- 0
- 约6.45千字
- 约 10页
- 2016-11-27 发布于重庆
- 举报
基于SOPC的數字钟
(2013-2014学年
第二学期)
重庆理工大学研究生课程论文
课程论文题目:
基于SOPC的数字钟设计
课程名称
SOPC技术及系统设计
课程类别
□学位课 □非学位课
任课教师
王先全
所在学院
电子学院
学科专业
仪器仪表工程
姓名
王小辉
学号
51307260101
提交日期
2014年7月7日
注意事项:
注意事项:
1、以上各项由研究生认真填写;
2、研究生课程论文应符合一般学术规范,具有一定学术价值,严禁网上下载或抄袭;凡检查或抽查不合格者,一律取消该门课程成绩和学分,并按有关规定追究相关人员责任;
3、论文得分由批阅教师填写(见封底),并签字确认;批阅教师应根据作业质量客观、公正的在文后签写批阅意见;
4、原则上要求所有课程论文均须用A4纸打印,加装本封面封底,左侧装订;
5、课程论文由各学院(部)统一保存,以备查用。
4、卷纸不够写,可另附纸。
基于SOPC的数字钟设计
摘要:在EDA软件平台上,以硬件描述语言VHDL为系统逻辑描述手段完成的数字钟设计文件,完成逻辑优化和仿真测试。
关键词:计数器 模块 FLASH
一、设计要求
①数字钟的秒计数器(用FPGA实现);
②数字钟的分计数器(用FPGA实现);
③数字钟的小时计数器(用FPGA实现);
④NIOS 的中断设计;
⑤NIOS读取数字钟的秒、分、小时的数据;
⑥NIOS 显示数字钟的秒、分、小时的内容
数字钟vhdl
数字钟vhdl
时钟
秒个位
秒十位
分个位
分十位
cpu
中断
时个位
时十位
七段码显示
二、方案设计
⒈根据设计要求,我们首先需在FPGA上完成数字钟的硬件设计,这里又可以细化为六个部分:
①将所选时钟信号转换为以秒为基准的信号,作为后面所需的秒时钟信号。这里我选的10Hz的时钟信号作为GPGA的输入信号,所以需做个十进制的计数器,即计数到10,full信号置1(full信号作为下个模块的时钟信号)。又因为计数值转换时不稳,会有跳变发生,接到数码管之后可能会有数值跳跃的现象,所以我在其中又添加了一个信号量INTEERUPT,当计数为2-8时INTEERUPT为1否则为0,将该信号接到NIOS中,编程实现INTEERUPT为1时输出时钟信号,就避免了跳变现象。
②这部分需实现秒的计数,即前个模块的输出信号full作为它的输入信号clk,clk为1,计数值加1,加到59再来一个clk信号,计数值就自动清零,同时把输出信号full置1(full信号又作为下个模块的时钟信号)。
③分模块跟秒模块计数功能一制,这里我偷懒把秒模块复用为分模块。
④小时模块跟秒、分模块功能相近,只是清零值跟进位值不同(个位进位值9而清零值为4),这里要比秒、分模块多加一个变量,让它根据小时模块个位是否是4同时十位是否是2来置0置1,以此作为清零标志。
⑤若以上模块在各自的工程中仿真成功,那接下来就需要把他们组合起来。新建了个工程a,把以上四个模块(其实只有三个,分、秒模块可以复用) 的vhdl文件添加进去,转换文件格式成电路图格式,然后在顶层文件中将他们组合连线,编译仿真成功之后,再将顶层文件转换成bsf文件,供后面使用(在FPGA与CPU系统符号结合时需调用)。
⑥FPGA部分仿真成功之后,接下来就得新建一个工程b另做SOPC builder部分,把a中vhdl和bsf文件全复制并添加进来。
这里需注意,芯片选型与实验箱要匹配,本设计我添加了片上ROM、RAM及片外FLASH,片上ROM用来存储复位地址,片上RAM用来存储异常变量,片外FLASH具有掉电保持功能,用来存储程序(因为FLASH只识别pof文件,所以我们下硬件时要先把sof文件转换成pof文件,并在硬件下载界面中,把它加进去)。三态桥是连接FLASH和CPU的桥梁,这里我选的Avalon-MM Tristate Bridge。其次是输入输出端口的设置,这里的输入实际是与FPGA的输出对应的,即六个四位输入信号(秒个位、秒十位、分个位、分十位、小时个位、小时十位)外加一个一位的类似中断的选通信号(INTERRUPT)。设置并分配好之后,生成电路符号文件,在新建的顶层文件中加入刚生成的CPU系统符号和在FPGA中生成的bsf类型模块,在连线、添加输入输出口、注明网络标号之后,编译。我们做的硬件最终是要跟实物相连的,所以这里引脚分配很重要,不能重不能漏,qsf中引脚名称也必须bdf中引脚名与一致,参数设置完后再次编译,无误后,我们就可以开始编写软件部分。
⒉软件部分,即NIOS部分,我们打开NIOS并新建工程c时需把前面工程b中的生成的ptf文件作为硬件设计文件。然后在工程中添加软件程序ma
原创力文档

文档评论(0)