




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上SOPC课程设计实验报告 基于SOPC的警示灯设计 2013电子信息工程3班李婕 罗丹妮一、 设计目的 1、 熟悉掌握SOPC的基本流程2、 设计一个警示灯并满足基本要求3、 通过设计发现问题并解决二、 设计设备1、硬件:PC机、SOPC-NIOS II EDA/SOPC系统开发平台2、软件:QUARTUS II、SOPC Builder、NIOS II IDE三、 设计内容 初始状态为红灯(LED2)熄灭,绿灯(LED1)点亮,数码管显示为0。 当按键按下,红灯(LED2)闪烁,绿灯(LED1)熄灭,同时蜂鸣器响起,数码管开始倒计时9S,此状态持续时间为9s。 9s
2、后,恢复初始状态。四、 设计步骤1、 使用Quartus II建立一个工程文件和顶层文件;2、 使用SOPC Builder建立一个简单Nios II硬件系统1) 启动SOPC Builder2) 指定目标FPGA3) 添加NiosII内核及其他外设A、添加NiosII、SRAM、JTAG-UART、Avalon总线的IP核 B、添加一个2位的输入型PIO作为按键keyC、添加两个1位的输出型PIO作为 led1及led2的输出端口D、添加一个1位的输出型PIO作为蜂鸣器的输入端口AE、添加一个3位的输出型PIO作为数码管的位选selF、添加一个8位的输出型PIO作为数码管的段选dat 4)
3、指定基地址和中断优先级 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、
4、下载.SOF至FPGA,运行程序,观察结果五、设计程序 蜂鸣器程序(VHDL):LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sing1 IS PORT( 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:ST
5、D_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 ;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
6、9;EVENT AND CLK='1' THEN IF 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= THEN CLK_4HZ<='1' COUNTER2<=; ELSIF COUNTER2= THEN CLK_4HZ<='0' COUN
7、TER2<=1; ELSE COUNTER2<=COUNTER2+1; END IF;END IF;END PROCESS;PROCESS(CLK_4MHZ)BEGIN IF CLK_4MHZ'EVENT AND CLK_4MHZ='1' THEN IF DRIVER="11"THEN CARRIER<='1' DRIVER<=ORIGIN;ELSEDRIVER<=DRIVER+1;CARRIER<='0'END IF;END IF;END PROCESS;PROCESS(CARRI
8、ER)BEGINif(p='1')thenIF CARRIER'EVENT AND CARRIER='1' THENCOUNT<=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 THENCOUN
9、TER<=0;ELSE COUNTER<=COUNTER+1;END IF;END IF;CASE COUNTER ISWHEN 0 =>DIGIT<="" WHEN 1 =>DIGIT<=""WHEN 2 =>DIGIT<="" WHEN 3 =>DIGIT<=""WHEN 4 =>DIGIT<="" WHEN 5 =>DIGIT<=""WHEN 6 =>DIGIT<="
10、;" WHEN 7 =>DIGIT<=""WHEN 8 =>DIGIT<="" WHEN 9 =>DIGIT<=""WHEN 10 =>DIGIT<="" WHEN 11 =>DIGIT<=""WHEN 12 =>DIGIT<="" WHEN 13 =>DIGIT<=""WHEN 14 =>DIGIT<="" WHEN 15 =&g
11、t;DIGIT<=""WHEN 16 =>DIGIT<="" WHEN 17 =>DIGIT<=""WHEN 18 =>DIGIT<="" WHEN 19 =>DIGIT<=""WHEN 20 =>DIGIT<="" WHEN 21 =>DIGIT<=""WHEN 22 =>DIGIT<="" WHEN 23 =>DIGIT<=&quo
12、t;"WHEN 24 =>DIGIT<="" WHEN 25 =>DIGIT<=""WHEN 26 =>DIGIT<="" WHEN 27 =>DIGIT<=""WHEN 28 =>DIGIT<="" WHEN 29 =>DIGIT<=""WHEN 30 =>DIGIT<="" WHEN 31 =>DIGIT<=""WHEN 32
13、=>DIGIT<="" WHEN 33 =>DIGIT<=""WHEN 34 =>DIGIT<="" WHEN 35 =>DIGIT<=""WHEN 36 =>DIGIT<="" WHEN 37 =>DIGIT<=""WHEN 38 =>DIGIT<="" WHEN 39 =>DIGIT<=""WHEN 40 =>DIGIT<=&
14、quot;" WHEN 41 =>DIGIT<=""WHEN 42 =>DIGIT<="" WHEN 43 =>DIGIT<=""WHEN 44 =>DIGIT<="" WHEN 45 =>DIGIT<=""WHEN 46 =>DIGIT<="" WHEN 47 =>DIGIT<=""WHEN 48 =>DIGIT<="" WHEN
15、 49 =>DIGIT<=""WHEN 50 =>DIGIT<="" WHEN 51 =>DIGIT<=""WHEN 52 =>DIGIT<="" WHEN 53 =>DIGIT<=""WHEN 54 =>DIGIT<="" WHEN 55 =>DIGIT<=""WHEN 56 =>DIGIT<="" WHEN 57 =>DIGIT&l
16、t;=""WHEN 58 =>DIGIT<="" WHEN 59 =>DIGIT<=""WHEN 60 =>DIGIT<="" WHEN 61 =>DIGIT<=""WHEN 62 =>DIGIT<="" WHEN 63 =>DIGIT<=""WHEN 64 =>DIGIT<="" WHEN 65 =>DIGIT<=""W
17、HEN 66 =>DIGIT<="" WHEN 67 =>DIGIT<=""WHEN 68 =>DIGIT<="" WHEN 69 =>DIGIT<=""WHEN 70 =>DIGIT<="" WHEN 71 =>DIGIT<=""WHEN 72 =>DIGIT<="" WHEN 73 =>DIGIT<=""WHEN 74 =>DIGI
18、T<="" WHEN 75 =>DIGIT<=""WHEN 76 =>DIGIT<="" WHEN 77 =>DIGIT<=""WHEN 78 =>DIGIT<="" WHEN 79 =>DIGIT<=""WHEN 80 =>DIGIT<="" WHEN 81 =>DIGIT<=""WHEN 82 =>DIGIT<="&quo
19、t; WHEN 83 =>DIGIT<=""WHEN 84 =>DIGIT<="" WHEN 85 =>DIGIT<=""WHEN 86 =>DIGIT<="" WHEN 87 =>DIGIT<=""WHEN 88 =>DIGIT<="" WHEN 89 =>DIGIT<=""WHEN 90 =>DIGIT<="" WHEN 91 =>
20、DIGIT<=""WHEN 92 =>DIGIT<="" WHEN 93 =>DIGIT<=""WHEN 94 =>DIGIT<="" WHEN 95 =>DIGIT<=""WHEN 96 =>DIGIT<="" WHEN 97 =>DIGIT<=""WHEN 98 =>DIGIT<="" WHEN 99 =>DIGIT<="
21、"WHEN 100=>DIGIT<="" WHEN 101=>DIGIT<=""WHEN 102=>DIGIT<="" WHEN 103=>DIGIT<=""WHEN 104=>DIGIT<="" WHEN 105=>DIGIT<=""WHEN 106=>DIGIT<="" WHEN 107=>DIGIT<=""WHEN 108=&
22、gt;DIGIT<="" WHEN 109=>DIGIT<=""WHEN 110=>DIGIT<="" WHEN 111=>DIGIT<=""WHEN 112=>DIGIT<="" WHEN 113=>DIGIT<=""WHEN 114=>DIGIT<="" WHEN 115=>DIGIT<=""WHEN 116=>DIGIT<=&qu
23、ot;" WHEN 117=>DIGIT<=""WHEN 118=>DIGIT<="" WHEN 119=>DIGIT<=""WHEN 120=>DIGIT<="" WHEN 121=>DIGIT<=""WHEN 122=>DIGIT<="" WHEN 123=>DIGIT<=""WHEN 124=>DIGIT<="" WHEN 1
24、25=>DIGIT<=""WHEN 126=>DIGIT<="" WHEN 127=>DIGIT<=""WHEN 128=>DIGIT<="" WHEN 129=>DIGIT<=""WHEN 130=>DIGIT<="" WHEN 131=>DIGIT<=""WHEN 132=>DIGIT<="" WHEN 133=>DIGIT<
25、=""WHEN 134=>DIGIT<="" WHEN 135=>DIGIT<=""WHEN 136=>DIGIT<="" WHEN 137=>DIGIT<=""WHEN 138=>DIGIT<="" WHEN 139=>DIGIT<=""WHEN OTHERS=>DIGIT<=""END CASE;CASE DIGIT IS WHEN "&q
26、uot;=>ORIGIN<="00" WHEN ""=>ORIGIN<="01" WHEN ""=>ORIGIN<="10" WHEN ""=>ORIGIN<="01" WHEN ""=>ORIGIN<="01" WHEN ""=>ORIGIN<="10" WHEN ""=>ORI
27、GIN<="01" WHEN ""=>ORIGIN<="00" WHEN ""=>ORIGIN<="10" WHEN ""=>ORIGIN<="00"WHEN OTHERS=>ORIGIN<="11"END CASE;END PROCESS;END SONG; 警示灯总程序:#include <stdio.h> #include <sys/unistd.h>
28、#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 se
29、gtab10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /09段码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,segtabnum); /显示倒计时 usle
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 矿产勘查中的非常规油气资源评价考核试卷
- 胶合板在智能家居市场的应用考核试卷
- 市场营销战略与实践考试考核试卷
- 矿山机械设备更新与投资决策考核试卷
- 租赁机械的节能减排技术考核试卷
- 节能建筑能耗模拟与优化施工考核试卷
- 员工持股计划信托股权激励合同
- 工业级烧碱(NaOH)绿色供应链管理合作协议
- 互联网平台数据隐私保护与服务协议
- 物流园区节能减排规划设计与实施合同
- 新北师大版八年级下册数学教案+教学计划大全
- 量子通信平台下的宇宙观测-全面剖析
- 2025-2030中国生物质能发电行业市场现状供需分析及投资评估规划分析研究报告
- SL631水利水电工程单元工程施工质量验收标准第1部分:土石方工程
- (正式版)HGT 22820-2024 化工安全仪表系统工程设计规范
- 突发公共卫生事件流行病学-课件
- 马拉松体检表
- 利巴韦林注射液生产工艺验证方案
- 高中音乐 鉴赏 第五单元《诗乐相彰》第九节 独唱曲 课件
- 恒强文字多纱嘴组设定
- 外科护理学练习题库判断题及答案
评论
0/150
提交评论