关键词不能为空

当前您在: 主页 > 英语 >

技术课程设计基于SOPC技术实现数字闹钟

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2020-10-25 05:06
tags:hrl

死英语-地震强度

2020年10月25日发(作者:班录)


赣南师院
物理与电子信息学院
SOPC技术课程设计报告书

专业班级:09电信本
学生姓名:胡雯莹
学 号: 090802054
指导教师:管立新
设计时间: 2011.12.30
基于SOPC技术实现数字闹钟
一、课题简介
SOPC技术是美国Altrea公司于2000年最早提出的,并同时推出了相应的开发软件Quartus II。
SOPC是基于FPGA解决方案的SOC,与ASIC的SOC解决方案相比,SOPC系统及 其开发技术具
有更多的特色,构成SOPC的方案有多种途径,我们主要用到的是:基于FPGA嵌入I P硬核的SOPC
系统
1.基于FPGA嵌入IP硬核的SOPC系统
即在FPG A中预先植入嵌入式系统处理器。目前最为常用的嵌入式系统大多采用了含有ARM


的3 2位知识产权处理器核的器件。尽管由这些器件构成的嵌入式系统有很强的功能,但为了使系
统更为灵活 完备,功能更为强大,对更多任务的完成具有更好的适应性,通常必须为此处理器配置
许多接口器件才能 构成一个完整的应用系统。如除配置常规的SRAM、DRAM、Flash外,还必须
配置网络通信接 口、串行通信接口、USB接口、VGA接口、PS2接口或其他专用接口等。这样会
增加整个系统的体 积、功耗,而降低系统的可靠性。但是如果将ARM或其他知识产权核,以硬核
方式植入FPGA中,利 用FPGA中的可编程逻辑资源和IP软核,直接利用FPGA中的逻辑宏单元
来构成该嵌入式系统处理 器的接口功能模块,就能很好地解决这些问题。
2.基于FPGA嵌入IP软核的SOPC系统
这种SOPC系统是指在FPGA中植入软核处理器,如:NIOS II核等。用户可以根据设计的要求,利
用相应的EDA工具,对NIOS II及其外围设备进行构建 ,使该嵌入式系统在硬件结构、功能特点、资
源占用等方面全面满足用户系统设计的要求。
二、数字闹钟的工作原理及设计过程
1、工作原理

数字闹钟组成结构
数字闹钟一般由振荡器、分频器、计数器、译码器、显示器及部分扩展电路等组成。
1.1 振荡器
振荡器是数字电子钟的核心,其作用是产生一个频率标准,即时间标准信号,然后再由分频器< br>生成秒脉冲,所以,振荡器频率的精度和稳定度就基本决定了数字电子钟的准确度,为产生稳定的
时间标准信号,一般采用石英晶体振荡器。从数字电子钟的精度考虑,振荡频率越高记数精度越高。


但这回使振荡器的耗电量增大,分频器级数增多。所以在确定频率时应同时考虑这两方面的因素再选择器材。如果精度要求不是很高的话我们可以采用由集成逻辑门与RC组成的时钟源振荡器或由
集 成电路定时器555与RC组成的多谐振荡器。一般而言,选用石英晶体振荡器所选用的晶振频率
为32 768Hz,再通过15级2分频集成电路得到1Hz的标准秒脉冲。
1.2 分频器
振荡 器产生的时标信号频率很高,要使它变成用来计时的“秒”信号,需要若干级分频电路,
分频器的级数和 每级分频次数要根据时标信号的频率来决定。其功能主要有两个:一是产生标准秒
脉冲信号,二是提供功 能扩展电路所需的信号。
1.3 计数器
有了“秒”信号了就可以根据60秒为一分,60 分为一小时,24小时为一天的进制,分别选定
没“秒”、“分”、“时”的计数器。从这些计数器的输 出可得到一分、一小时、一天的时间进位信号。
在秒计数器钟因为是60进制通常用两个十进制计数器的 集成片组成,其中秒个位是十进制的、十
位是6进制的。可采用反馈归零法变“秒”十位为6进制,实现 秒的60进制,同样,分计数器的
与秒的一样,只是时计数器里需要变成24进制,也用反馈归零法实现 。
1.4 译码器及显示器
因为计数器全部采用8421BCD码十进制计数集成芯片, 所以“秒”、“分”、“时”的个位和十位
都有四个状态输出端(Qa、Qb、Qc、Qd)。将这些输 出端接至专门设计制造的译码电路,就可产生
驱动七段数码显示器的信号。
1.5 校时电路
当数字钟接通电源或者计时出现误差时需要校正时间,校时电路的要求是:在小时校正时不影
响分和秒的正常计数;在分校时时不影响时和秒的正常计数;校时方式有“快校时”和“慢校时”
两种,“快校时“是通过开关控制使计数器对1Hz的校时脉冲计数,“慢校时”是通过手动产生单脉
冲作校时脉冲,校时的基本原理是将0.5秒的脉冲信号(可由分频器的第14级分频输出端直接获
得) ,直接引进“时”计数器,同时将计数器置“0”,在时的指示调到需要的数字后,再切断“0.5”
信 号让计数器正常工作。



2、设计过程
SOPC设计首先使用Quartus II建立一个Quartus II 的工程,创建完成工程之后,需要创建
顶层实体。创建完顶层设计文件之后,使用SOPC Builder创建NIOS II 嵌入式处理器,添加、配
置系统的外设IP,组成Nios II系统模块。 Nios II 系统模块设计完成之后要加入到该顶层实体
中,然后进行其他片上逻辑的开发。
2.1 Quartus II 工程的建立:
(1)启动Quartus II软件;
(2)选择 File菜单NewProjectWizard,出现Introduction页面,该页面介绍所要完成的
具体任务,点击next。
(3) 进行项目名称的设定、工作目录的选择。指定工程存放的 目录,工程名和顶层实体名,
工程名和顶层实体名要求相同,工程目录可以随意设置,但必须是英文的目 录,工程名和顶层实体
名也要求是英文名字,我们的工程名和顶层实体名为clock,选择Next。



4. 可以为工程添加先期已经输入的设计文件,指定用户自定义的元件库的 路径,这里我们没
有事先输入好的文件,也没有自定义的元件库,点击Next进入下一步。
5. 用户指定目标器件,根据开发板的所使用的器件来选择,实际开发中,通过查看核心板的
参考手册来获取所使用的器件具体型号,可以使用窗口右边的Filters来加快器件的选择,选择完
毕点击Next。
6. 指定在Quartus II 之外的用于,设计输入、综合、仿真、时序分析的第三方EDA工具,
Quartus II对第三方工具的支持比较完善。这里我们不做选择,直接点击Next。
所见新工程的信息,确认 所创建工程的主要信息,点击Finish完成工程的建立,在开发的过
程中,还可以通过菜单来对这些 配置进行修改。点击Finish按钮,Quartus
II自动会打开这个工程,可以看到顶层实体名出现在工程导航窗口中。
7,、新建的工程窗口中,选择;在Device Design File页中,选择Block Diagram/
Schematic File,即原理图文件,也可以选择硬件描述语言的文件形式 。单击OK。出现一个模块
编辑窗口;选择,出现Save As对话框,显示的目录为之前设置的工程 目录,文件
名为之前设置的顶层实体名(由于这是工程的第一个文件,系统会默认为顶层设计实体的名字 )。
确定Add to Current Project选项被选中,点击save。



器件型号

2.2创建NIOS II 系统模块
(1)创建系统:启动SOPC Builder,选择,出现如图所示的Create New
System对话框。键入系统的名字,选择硬件描述语言Verilog或者是VHDL。
(2) 设置系统主频和指定目标FPGA:在Board部分选择Unspecified,然后在Device Family
选择Cyclone II。用户需要设置系统的时钟频率,该频率用于计算硬件和软件开 发中的定时,比
如时钟分频或波特率,还可以选择是否选用流水线。
(3)加入Nios II CPU和 IP模块:首先加入Nios II软核,Nios II 是软核CPU,共有三种
类型的CPU可供选择:Nios IIe(经济型)、Nios IIs(标准型)和Nios IIf(快速型)。用户
可以根据实际的情况进行选择。Nios II是一个用户可以自行进行定制的CPU,用户可以增加新的
外设、新的指令等。



添加CPU软核

添加内存__SDRAM



添加LCD模块 添加100ms的定时器

完整的SOPC的硬件系统
PLL
inclk0
inclk0 frequency: 50.000 MHz
Operation Mode: Normal
Clk RatioPh (dg)DC (%)
c0
c1
11
11
-54.00
0.00
50.00
50.00
c0c1
inst1
Cyclone II


生成的PLL模块
PLL
CLK_50MHz
INPUT< br>VCC
inclk0
inclk0 frequency: 50.000 MHz
Operation Mode: Normal
Clk RatioPh (dg)DC (%)
c0
c1
11
11
-54.00
0. 00
50.00
50.00
PIN_L1
LVTTL
c0
c 1
OUTPUT
DRAM_CLK
PIN_U4
PIN_A13
PI N_B13
PIN_A14
PIN_B14
PIN_A15
PIN_B15< br>PIN_A16
PIN_B16
LVTTL
LCD_E
LVTTLPIN_H14
PIN_H12
LVTTL
LCD_RS
LVTTLLVTTL
LCD_RW
PIN_H13
LVTTL
LCD_data[ 7..0]
LVTTL
LVTTL
LVTTL
DRAM_ADDR[11.. 0]
LVTTL
DRAM_BA_1,DRAM_BA_0
PIN_U1IN_W4< br>DRAM_CAS_N
PIN_U2IN_W5
IN_T3IN_U3
PIN_ V1IN_Y3
DRAM_CKE
IN_V4
PIN_N3
PIN_V2IN _Y4
DRAM_CS_N
PIN_W1IN_R6
DRAM_DQ[15..0]< br>PIN_T6PIN_R7
PIN_W2IN_R5
IN_T5
DRAM_UD QM,DRAM_LDQM
PIN_M5
PIN_Y1IN_P6
DRAM_RAS_ N
PIN_Y2IN_P5
DRAM_WE_N
PIN_N1IN_P3
PI N_R8
PIN_N2IN_N4
PIN_PIN_W31
PIN_PIN_N62< br>PIN_R1
PIN_R2
PIN_T1
PIN_T2
CLOCKCyclone II
inst
clk_0
reset_n
in_port_to_the_button_pio_0[2..0]
LCD_E_from_the_lcd_0
LCD_RS_from_the_lcd_0
LCD_RW_from_the_lcd_0
LCD_data_to_and_from_the_lcd_0[7..0]
zs_addr_from_the_sdram_0[11..0]
zs_ba_from_the_sdram_0[1..0]
zs_cas_n_from_the_sdram_0
zs_cke_from_the_sdram_0
zs_cs_n_from_the_sdram_0
zs_dq_to_and_from_the_sdram_0[15..0]
zs_dqm_from_the_sdram_0[1..0]
zs_ras_n_from_the_sdram_0
zs_we_n_from_the_sdram_0
OUTPUT
OUTPUT< br>OUTPUT
BIDIR
VCC
Reset_n
INPUT
V CC
PIN_R22
LVTTL
KEY[3..1]
PIN_R21
PIN_T22
PIN_T21
LVTTL
LVTTL
LVTTL
I NPUT
VCC
OUTPUT
OUTPUT
OUTPUT
OUTPU T
OUTPUT
BIDIR
VCC
OUTPUT
OUTPUT
OUTPUT
SW[0]
INPUT
VCC
in_port_to_the _switch_pio_0
inst1
PIN_L22
LVTTL

顶层总原理图
2.3部分程序如下:

模24计数器
counter24.v
1 filename :counter24.v (BCD : 0--23)
2 module counter24(CntH,CntL,ncR,EN,CP);
3 input CP,ncR,EN;
4 output [3:0]CntH,CntL;
5 reg [3:0]CntH,CntL;
6
7 always @(posedge CP,negedge ncR)
8 begin
9 if(~ncR)
10 {CntH,CntL}<=8'h00;
11 else if(~EN)
12 {CntH,CntL}<={CntH,CntL};
13 else if((CntH>2)||(CntL>9)||((CntH==2)&&(CntL>=3)))
14 {CntH,CntL}<=8'h00;
15 else if((CntH==2)&&(CntL<3))
16 begin
17 CntH<=CntH;


18 CntL<=CntL+1'b1;
19 end
20 else if(CntL==9)
21 begin
22 CntH<=CntH+1'b1;
23 CntL<=4'b0000;
24 end
25 else
26 begin
27 CntH<=CntH;
28 CntL<=CntL+1'b1;
29 end
30 end
31
32 endmodule
模60计数器
counter60.v
1 countuer 60
2
3 counter10.v (BCD: 0--9)
4 module counter10(Q,ncR,EN,CP);
5 input CP,ncR,EN;
6 output reg [3:0]Q;
7
8 always @(posedge CP,negedge ncR)
9 begin
10 if(~ncR)
11 Q<=4'b0000;
12 else if(~EN)
13 Q<=Q;


14 else if(Q==4'b1001)
15 Q<=4'b0000;
16 else
17 Q<=Q+1'b1;
18 end
19 endmodule
20
21 counter6.v(BCD: 0--5)
22 module counter6(Q,ncR,EN,CP);
23 input CP,ncR,EN;
24 output reg [3:0]Q;
25
26 always @(posedge CP,negedge ncR)
27 begin
28 if(~ncR)
29 Q<=4'b0000;
30 else if(~EN)
31 Q<=Q;
32 else if(Q==4'b0101)
33 Q<=4'b0000;
34 else
35 Q<=Q+1'b1;
36 end
37 endmodule
38
39 counter60.v(BCD:0--59)
40 module counter60(Cnt,ncR,EN,CP);
41 input CP,ncR,EN;
42 output [7:0]Cnt;
43 wire [7:0]Cnt;


44 wire ENP;
45
46 counter10 UC0(Cnt[3:0],ncR,EN,CP);
47 counter6 UC1(Cnt[7:4],ncR,ENP,CP);
48
49 assign ENP=(Cnt[3:0]==4'h9);
50 endmodule
闹钟
bell.v
1 Bell.v
2 module Bell(alarm_clock,set_hr,set_min,hour,minute,
3 second,sethrkey,setminkey,_1khz,_500hz,
4 _1hz,ctrlbell);
5 output alarm_clock;
6 output [7:0]set_hr,set_min;
7 wire alarm_clock;
8 input _1khz,_500hz,_1hz;
9 input sethrkey,setminkey;
10 input ctrlbell;
11 input [7:0]hour,minute,second;
12
13 supply1 Vdd;
14 wire hrh_equ,hrl_equ,minh_equ,minl_equ;
15 wire time_equ;
16
17 counter60 SU1(set_min,Vdd,setminkey,_1hz);
18 counter24 SU2(set_hr[7:4],set_hr[3:0],Vdd,sethrkey,_1hz);
19
20 comparate the set time
21 _4bitcomparator SU4(hrh_equ,set_hr[7:4],hour[7:4]);


22 _4bitcomparator SU5(hrl_equ,set_hr[3:0],hour[3:0]);
23 _4bitcomparator SU6(minh_equ,set_min[7:4],minute[7:4]);
24 _4bitcomparator SU7(minl_equ,set_min[3:0],minute[3:0]);
25
26 assign time_equ=(hrh_equ && hrl_equ && minh_equ && minl_equ);
27 assign alarm_clock =ctrlbell?(time_equ&&(((second[0]==1'b1)&&_500hz)
28 ||((second[0]==1'b0)&&_1khz))):1'b0;
29 endmodule
30
31 4bitcomparator.v
32 module _4bitcomparator(equ,a,b);
33 input [3:0]a,b;
34 output equ;
35
36 assign equ=(a==b);
37 endmodule
2.3元器件型号及逻辑门
芯片:EP2C20F484C7 1.2v 18752 315 239616 52 4
占用了3383个逻辑单元,占器件中18752个逻辑单元的18%
Timeout period:100ms
Timer counter size :32bits
Pio:4
电容若干
开关若干
100khz晶振1块
蜂鸣器1个
三、设计过程中遇到的问题及方案
在连接电路时,用1HZ的信号输入 时,发现数码管显示没有按预期的要求显示,结果得等一两
分钟才显示一次,于是用是最后用时钟信号来 代替晶振通过调节脉冲信号的大小,结果发现在
200HZ下,数码管才能实现其功能。


在设计闹铃功能时,原先总是想把定时部分显示出来,结果老是不近人意,后来通过查阅很多
资料发现介绍定时器设计时,看到用逻辑开关来控制时,突然灵机一动,于是找到一个逻辑开关,
把一端 接在+5v上,然后放置一示波器,观察其波形,当开关拨置上端时发现示波器显示为高电平。
再将示波 器接至数码管输入端时,发现4个输入端为8421码,于是想,是否可以将数码管输入端
与逻辑开关组 成比较器,后来真的解决了。
四、设计心得体会
经过几星期的努力,终于把这次课程设计做 完了。虽然刚开始对何为SOPC一点都不懂,于是按
部就班地上图书馆去查阅资料,上网去搜索终于有 较表层的认识。但是这样远远不够的,还需要对
数字闹钟的整体设计,包括具有什么功能,实现这些功能 需要哪些元器件,还有软件与硬件的结合,
代码的实现。这需要我再次翻开数电书,重新再学习一次。
此次课程设计让我认清了几点:
第一, 将理论付诸实践的困难。
第二, 查找资料的重要性。
第三, 细节决定成败。
第四, 查找故障的能力有待提高。
总的来说,电子钟的课程设计有利于培养我们对电子设计的兴趣,也让我发现了自身很多不足,
学会了 不少知识,帮我积累了不少经验。这对我以后的学习和工作都是一笔不可多得的财富。最后
感谢老师一直 以来的支持和指导,老师辛苦了!
参考文献:
[ 1 ] 康华先--- 电子技术基础(数字部分) ;第五版[M]高等教育出版社。
[ 2 ] 谢自美--- 《电子线路设计 实验 测试》;华中科技大学出版社。
[ 3 ] 谭浩强---《C程序设计》;清华大学出版社。
[ 4 ] 王建国---《SOPC设计基础与实践》;西安电子科技大学出版社
赣南师范学院2011-- 2012学年第一学期SOPC技术课程设计


行政班级 电子信息工程09级 学号 _090802054_ 姓名 胡雯莹
选课班级 电子信息工程09级 任课教师 管立新 成绩 _________
课程设计题目:基于SOPC技术数字闹钟
设计要求:

教师评语:
教师签字:
年月日

双杀的英文-俩的成语开头


sloth什么意思-糖果的英语


岑参拼音-小巫见大巫是什么意思


老虎英语怎么读-眼巴巴的近义词


摒弃什么意思-cursory


相遇的反义词-送礼客套话大全


drinks怎么读-筛网目数


仿真化学实验室5-爱人的意思



本文更新与2020-10-25 05:06,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/424657.html

技术课程设计基于SOPC技术实现数字闹钟的相关文章