首页 NIOSII秀_芯合NIOS II教程(2)

NIOSII秀_芯合NIOS II教程(2)

举报
开通vip

NIOSII秀_芯合NIOS II教程(2) 第四章 数码管的表演 一 简介  下面我们来学习第一个真正的硬件例程,看看数码管给我们带来了什么精彩内容。 二 建立 PIO模块  首先,打开 Quartus II 10.0,File->Open Project。选择.qpf文件,我选的是 D:\altera\10.0sp1\niosShow\niosShow.qpf 在软核部分添加,Tools->SOPC Builder。 如下图所示,双击选择 PIO。 如下图红框处修改,点击 Finish。 如下图,PI...

NIOSII秀_芯合NIOS II教程(2)
第四章 数码管的 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 演 一 简介  下面我们来学习第一个真正的硬件例程,看看数码管给我们带来了什么精彩内容。 二 建立 PIO模块  首先,打开 Quartus II 10.0,File->Open Project。选择.qpf文件,我选的是 D:\altera\10.0sp1\niosShow\niosShow.qpf 在软核部分添加,Tools->SOPC Builder。 如下图所示,双击选择 PIO。 如下图红框处修改,点击 Finish。 如下图,PIO已经添加好,将其重命名为 pio_7SEG。 点击 System->Auto-Assign Base Addresses 点击 Generate按钮,进行编译。 休息一下~~ 再次看到 System generation war successful. OK,PIO部分结束了。 三 数码管软件部分  1 原理 在开发板上有一个 7x4数码管,即 4个独立的数码管,每个数码管由 7个发光管组成, 加上小数点,每一个数码管一共有 8个发光管,如下面的原理图。 图中 SINK1~4分别控制数码管 1-4与电源是否连通。以图中数码管 1为例,当 SINK4 为低电平,PNP三极管 BC807 导通,则七段数码管 1与电源 VCC3.3 联通,否则七段数码 管 1与电源 VCC3.3断开。 SEG_A\B\F\E\D\P\C\G分别一个具体的发光管。当 SEG_A\B\F\E\D\P\C\G为高电平时, 相应的发光管被点亮。以图中数码管 1为例,当 SINK4为低电平,SEG_A为高电平时,七 段数码管 1的 a被点亮。 FPGA_TX FPGA_RX FPGA_CTS FPGA_RTS SINK4 SINK3 SINK2 SINK1 S EG _F S EG _A S EG _E S EG _D S EG _P S EG _C S EG _G S EG _B J8_D1 J8_D4 J8_D2 J8_D3 T803 BC807 C 3 B 1 E 2 T804 BC807 C 3 B 1 E 2 T801 BC807 C 3 B 1 E 2 T802 BC807 C 3 B 1 E 2 a b c d e f g DP a e DP c d f g b 1 2 a f 4 c c f a b b g e dDPd DP e 3 g U802 4X7SEG MT03641BR VC C 3 2 b 1 e 7 VC C 2 3 VC C 1 6 f 4 c 10 D P 9 d 8 a 5 g 11 V C C 4 12 VCC3V3 VCC5V J8_D9 J8_D16 J8_D12 J8_D18 J8_D4 J8_D8 VCC3V3 VCC3V3 J8_D7 J8_D15 J8_D11 J8_D2 VCC5V VCC3V3 J8_D3 J8_D17 J8_D16 J8_D14 J8_D13 J8_D15 J8_D7 J8_D6 J8_D17 J8_D9 J8_D0 VCC5V J8_D11 J8_D13 J8_D6 J8_D10 J8_D5 J801HEADER 25X2 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 52 VCC5V J8_D12 J8_D1 J8_D14 J8_D0 J8_D10 VCC3V3 J8_D8 J8_D18 J8_D5 G802 GNPORT G N D 1 G801 GNPORT G N D 1 RN802 22 R1 1 R2 2 R3 3 R4 445 36 27 18 RN804 1K R1 1R2 2R3 3R4 4 4 5 3 6 2 7 1 8 RN803 22 R1 1 R2 2 R3 3 R4 4 4 53 62 71 8 SEG_D SEG_P SEG_C SEG_G SEG_B SEG_F SEG_A SINK4 SINK3 SEG_E SINK2 SINK1 2 具体操作 首先我们需要建立一个 Header File,如下图所示。 给文件命名,然后点击 Finish按钮。 SevenSegment.h代码如下: /* * SevenSegment.h * * Created on: 2010-10-22 * Author: www.fpgastudy.com */ #ifndef SEVENSEGMENT_H_ #define SEVENSEGMENT_H_ #include "system.h" typedef struct { unsigned int data; unsigned int direction; unsigned int interrupt_mask; unsigned int edge_capture; } PIO_STR; #define SevenSegment ((PIO_STR*)PIO_7SEG_BASE) #endif /* SEVENSEGMENT_H_ */ main.c代码如下: #include #include #include "system.h" #include "SevenSegment.h" int main() { int i; printf("7Segment example is running!\n"); while(1) { for(i=0;i<15;i++) { switch(i) { case 0:SevenSegment->data=0x40;break; //四个数码管全亮并显示0 case 1:SevenSegment->data=0x4F;break; //四个数码管全亮并显示1 case 2:SevenSegment->data=0x24;break; //四个数码管全亮并显示2 case 3:SevenSegment->data=0x30;break; //四个数码管全亮并显示3 case 4:SevenSegment->data=0x19;break; //四个数码管全亮并显示4 case 5:SevenSegment->data=0x12;break; //四个数码管全亮并显示5 case 6:SevenSegment->data=0x02;break; //四个数码管全亮并显示6 case 7:SevenSegment->data=0x78;break; //四个数码管全亮并显示7 case 8:SevenSegment->data=0x00;break; //四个数码管全亮并显示8 case 9:SevenSegment->data=0x10;break; //四个数码管全亮并显示9 case 10:SevenSegment->data=0x80;break; //四个数码管全亮并显示8,显示小数点 case 11:SevenSegment->data=0x700;break; //数码管1亮并显示8,显示小数点 case 12:SevenSegment->data=0xB00;break; //数码管2亮并显示8,显示小数点 case 13:SevenSegment->data=0xD00;break; //数码管3亮并显示8,显示小数点 case 14:SevenSegment->data=0xE00;break; //数码管4亮并显示8,显示小数点 case 15:SevenSegment->data=0xF00;break; //数码管全灭 default:break; } usleep(1000000); } } return 0; } 0x40为什么代表四个数码管全亮并显示 0呢? 在 niosShow.v中有如下代码: assign {seg,segment}=pio_data_out; seg表示 4个数码管,segment表示 8个发光管 0x40化为二进制位 0100 0000 对应 : 小数点 gfe dcba g为 1,表示 g不亮。对应原理图看看,g不亮表示什么?没错,是 0。而 segm没有表 示,判定它为 0000,即 4个数码管全部点亮。 同理,0x700的二进制为 0111 0000 0000,即数码管 1亮并显示 8,显示小数点 由于之前添加 PIO,改变了软核,所以需要重新 Generate BSP。 右键->Nios II->Generate BSP,如下图。 接下来,我们回到 QuartusII 配置管脚,将我们提供的数码管管脚信息复制到工程文件 夹的 niosShow.qsf文件中。 修改 niosShow.v文件,代码如下: module niosShow(clk,rstn,address_o,data_io,nce_o,nwe_o,noe_o, nbyte_enable_o,dclk_o,sce_o,sdo_o,data0_i,seg,segment); input clk,rstn; inout [15:0] data_io; output [17:0] address_o; output nce_o,nwe_o,noe_o; output [1:0] nbyte_enable_o; output dclk_o,sce_o,sdo_o; input data0_i; output [3:0] seg; output [7:0] segment; wire [11:0] pio_data_out; assign {seg,segment}=pio_data_out;//seg表示 4个数码管,segment表示 8个发光管 wire reset_n; wire clk_in; reset_logic reset_logic(.clk(clk),.rstn(rstn),.rstno(reset_n)); sys_pll clk_gen(.inclk0(clk),.c0(clk_in)); myNois myNois_inst ( .addrsee_o_to_the_sram256x16_fpgastudy (address_o), .clk_in (clk_in), .data0_to_the_epcs_flash_controller (data0_i), .data_io_to_and_from_the_sram256x16_fpgastudy (data_io), .dclk_from_the_epcs_flash_controller (dclk_o), .nbyte_enable_o_to_the_sram256x16_fpgastudy (nbyte_enable_o), .nce_o_to_the_sram256x16_fpgastudy (nce_o), .noe_o_to_the_sram256x16_fpgastudy (noe_o), .nwe_o_to_the_sram256x16_fpgastudy (nwe_o), .reset_n (reset_n), .sce_from_the_epcs_flash_controller (sce_o), .sdo_from_the_epcs_flash_controller (sdo_o), .out_port_from_the_pio_7SEG (pio_data_out) ); endmodule 编译,点击如下图红框处。 休息一下吧,我们离成功已经很近了。 编译成功了!!! 点击下图红框处,我们需要把硬件代码下载到开发板中。 插上数码管子板,连接 USB-Blaster,打开开发板电源。 在下载页面点击 Start按钮开始下载。 下载结束后,如上图所示,数码管的灯全部亮起。 硬件部分应经结束。 下面我们回到 Eclipse。 Run->Run Configurations。 进入如下界面,具体操作前面已经讲过。点击 Run按钮。 在 Eclipse上,可以看到 7Segment example is running! 在数码管上,数字从 0000-9999,循环改变。 辛苦没有白费,大功告成了!!! 第四章 数码管的表演 一 简介 二 建立PIO模块 三 数码管软件部分 1 原理 2 具体操作
本文档为【NIOSII秀_芯合NIOS II教程(2)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_517587
暂无简介~
格式:pdf
大小:1MB
软件:PDF阅读器
页数:12
分类:互联网
上传时间:2010-10-26
浏览量:17