关键词不能为空

当前您在: 主页 > 英语 >

SOPC技术课程设计报告书要点

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2020-10-25 06:15
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
的32位知识产权处 理器核的器件。尽管由这些器件构成的嵌入式系统有很强的功能,但为了使系
统更为灵活完备,功能更为 强大,对更多任务的完成具有更好的适应性,通常必须为此处理器配置
许多接口器件才能构成一个完整的 应用系统。如除配置常规的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组成的多谐振荡器。一般而言,选用石英晶体振荡器所选用的晶振频率
为3276 8Hz,再通过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菜单
的具体任务,点击next。
(3) 进行项目名称的设定 、工作目录的选择。指定工程存放的目录,工程名和顶层实体名,
工程名和顶层实体名要求相同,工程目 录可以随意设置,但必须是英文的目录,工程名和顶层实体
名也要求是英文名字,我们的工程名和顶层实 体名为clock,选择Next。
,出现Introduction页面,该页面介绍所要完成



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
VCC
inclk 0
inclk0 frequency: 50.000 MHz
Operation Mode: Normal
Clk RatioPh (dg)DC (%)
c0
c1
11
11
-54.00
0.00
50.00
50.00PIN_L1
LVTTL
c0
c1
OUTPUT
DRAM_CL K
PIN_U4
PIN_A13
PIN_B13
PIN_A14
PI N_B14
PIN_A15
PIN_B15
PIN_A16
PIN_B16< br>LVTTL
LCD_E
LVTTL
PIN_H14
PIN_H12LVTTL
LCD_RS
LVTTL
LVTTL
LCD_RW
P IN_H13
LVTTL
LCD_data[7..0]
LVTTL
LVTT L
LVTTL
DRAM_ADDR[11..0]
LVTTL
DRAM_BA _1,DRAM_BA_0
PIN_U1IN_W4
DRAM_CAS_N
PIN_U 2IN_W5
IN_T3IN_U3
PIN_V1IN_Y3
DRAM_CKE
IN_V4
PIN_N3
PIN_V2IN_Y4
DRAM_CS_N
PI N_W1IN_R6
DRAM_DQ[15..0]
PIN_T6PIN_R7
PIN _W2IN_R5
IN_T5
DRAM_UDQM,DRAM_LDQM
PIN_M5
PIN_Y1IN_P6
DRAM_RAS_N
PIN_Y2IN_P5
DR AM_WE_N
PIN_N1IN_P3
PIN_R8
PIN_N2IN_N4
PIN_PIN_W31
PIN_PIN_N62
PIN_R1
PIN_R2
PIN_T1
PIN_T2
CLOCK
Cyclone 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

沾湿-tactful


ease-苏洵怎么读


时奥-冰冻三尺非一日之寒


不同凡响的意思-麦琪的礼物读后感


such-无以言表意思是什么


稜-easta


性字开头的成语-reactable


什么的毅力-宫保虾仁



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

SOPC技术课程设计报告书要点的相关文章