单片机和FPGA.docx

上传人:b****5 文档编号:6489858 上传时间:2023-01-07 格式:DOCX 页数:87 大小:2.66MB
下载 相关 举报
单片机和FPGA.docx_第1页
第1页 / 共87页
单片机和FPGA.docx_第2页
第2页 / 共87页
单片机和FPGA.docx_第3页
第3页 / 共87页
单片机和FPGA.docx_第4页
第4页 / 共87页
单片机和FPGA.docx_第5页
第5页 / 共87页
点击查看更多>>
下载资源
资源描述

单片机和FPGA.docx

《单片机和FPGA.docx》由会员分享,可在线阅读,更多相关《单片机和FPGA.docx(87页珍藏版)》请在冰豆网上搜索。

单片机和FPGA.docx

单片机和FPGA

目录

第一章硬件结构简介:

4

一、FPGA核心板硬件资源4

二、MCU板硬件资源4

三、高速AD模块硬件资源5

四、高速DA模块硬件资源5

五、高速DDS模块硬件资源5

六、音频模块硬件资源5

第二章Quartus软件简介6

第三章.SOPC快速入门16

第四章MCU部分实验27

实验一流水灯实验27

实验二键盘扫描实验29

实验三数码管静态显示31

实验四数码管动态显示33

实验五液晶汉字显示实验35

实验六液晶字符显示实验37

实验七液晶图形显示实验39

实验八RS232双向通信41

实验九简易电压表实验43

实验十DA信号发生器45

实验十一DDS信号源47

第五章FPGA部分实验49

实验一EPCS编程实验49

实验二、SDRAM的仿真与其在NiosII系统使用实验51

实验三、建立带并行数据总线Flash的NiosII系统以及FLASH编程实验57

实验四简易逻辑分析仪实验61

实验五高速AD实验63

实验六高速DA实验64

实验七音频实验65

实验八PS2键盘控制LED实验66

实验九VGA实验67

实验十键盘显示实验68

实验十一DDS信号发生实验70

实验十二LCD显示实验73

实验十三简易存储示波器76

实验十四简易频率计

 

特点:

“SOPC/MCU电子设计综合实验箱”集众多功能于一体,是SOPC、EDA、51单片机实验教学及科研开发的最佳选择。

实验箱开放性和模块化的设计方便学生进行课程设计及毕业设计。

“SOPC/MCU电子设计综合实验箱”采用核心板加主板的结构。

用户也可以根据开放的接口来设计自己的核心板。

考虑到用户的实用性,FPGA核心板上除设计有FPGA、各类存储器以及用户外扩PACK外还设计有按键、LED(与主板共用I/O口)以及电源插座等。

MCU核心板包含了常用外围器件电路。

 

第一章硬件结构简介:

一、FPGA核心板硬件资源

●Altera公司FPGA芯片CycloneEP1C12Q240C8

●4x40脚核心模块扩展接口可与其他SOPC板、ARM板、DSP板、单片机板与主板

的无缝结合。

并也可通过扩展口外扩存储器,既能实现数据的大容量存储,又能提

高数据的存取速度

●AM29LV320DT-90EI4MB16位并行总线Flash芯片

●IS61LV512(256)16512(256)K16位并行总线高速SRAM

●K4S641632H64Mb16位并行总线SDRAM

●4个多功能按键

●8个LED用户指示灯

●1个系统复位按键,产生系统复位信号

●1个配置按键,用于重新配置

●CAT1025I2CEEPROM+专用复位芯片

●1个配置电路:

带串行EPCS4芯片

●1个JTAG接口

●1个AS接口

●5V转3.3V,1.5V电源电路

●一个50MHz有源晶振,产生系统时钟

●一个SMA座,可通过屏蔽线将一路PLL信号输出.

●核心板可独立使用

二、MCU板硬件资源

●STC89C58RD+(32kflash、1280字节SRAM、带E2PROM、3个定时器、UART异步串行口、32个IO口、内置复位电路、看门狗电路、)。

●两个四位一体共阳数码管

●8个贴片红色led灯

●12864点阵液晶

●2x816个按键

●2K字节E2PROM(24C16)

●32K字节RAM(HY62256)

●232接口(MAX232)

●485接口(SN75176)

●8位串行AD(TLC549)(可选)

●12位串行DA(TLV5618)(可选)

●模块5V供电

三、高速AD模块硬件资源

●AD922525MSPS12位并行总线AD转换器

●AD8055300MHz高带宽,低功耗运算放大器

●74HC541高速总线驱动器

●2x20脚扩展接口可将AD转换的数字量输出,并从外部引入电源,

方便与其他控制器无缝连接

●3个铜柱子亦可从外部引入电源

●一个SMA座子,可通过屏蔽线从外部引入AD采样时钟

●一个SMA座子,可通过屏蔽线从外部引入模拟信号

四、高速DA模块硬件资源

●AD9752125MSPS12位并行总线DA转换器

●AD8055300MHz高带宽,低功耗运算放大器

●74HC541高速总线驱动器

●2x20脚扩展接口可引入DA转换所需的数字量,

并从外部引入电源,方便与其他控制器无缝连接

●3个铜柱子亦可从外部引入电源

●一个SMA座子,可通过屏蔽线从外部引入DA转换时钟

●一个SMA座子,可通过屏蔽线将DA转换的模拟信号输出

五、高速DDS模块硬件资源

●AD9852300MHz,双12位并行DA,高速高精度多种信号模式的DDS芯片

●AD8055300MHz高带宽,低功耗运算放大器

●2个单刀单掷开关,可以选择时钟模式和编程模式

●1个20MHz的贴片有源晶振和时钟驱动芯片,提供系统时钟

●2个SMA座,可以通过屏蔽线将两个DA转换的模拟信号输出

●3个SMA座,用于DDS不同工作模式下的控制信号输入

●3个SMA座,用于内部高速比较器的输入输出

●5V转3.3V,5V转-5V电源电路

●一个风扇架子和风扇接口用于DDS的散热

●2x20扩展接口可以可以和单片机,FPGA,ARM等控制器进行无缝连接

六、音频模块硬件资源

●WM8731S立体声音24位音频编/解码芯片

●4个音频接口,分别为线路输入,线路输出,耳机输出,麦克风输入

●5V转3.3V电源电路,由一个5V电源插座

●1个18.432MHz晶振,提供系统时钟

●2x16扩展接口可以可以和单片机,FPGA,ARM等控制器进行无缝连接

第二章Quartus软件简介

该部分以跑马灯为列,演示QuartusII9.0的使用全过程。

一、启动QuartusII9.0后,默认界面如图一所示,由标题栏、菜单栏、工具栏、资源管理窗、编译状态显示窗、信息显示窗、工程工作区等部分组成。

图一

二、建立工程:

FILE->NewProjectWizard掉出新建工程向导窗口,如图二所示

图二

三、按下”NEXT”弹出如图三所示界面,在第一个文本框中选择工程目录,第二个、三个文本框输入工程名。

输入完成后如图四

图三

图四

 

四、按”NEXT”进入器件选择窗体,在”family”一栏选择”Cyclone”系列,在”AvailableDevice”一栏中选择“EP1C12Q240C8”.如图五所示。

图五

五、按”Finish”完成工程的建立。

进入如图六所示界面。

图六

六、建立顶层文件。

File->New进入新建文件选择窗体,如图七所示,选择VerilogHDLFile,建立.v文件。

图七

七、保存文件。

File->SaveAs,保存文件到工程目录。

如图八所示。

注意:

顶层文件名与工程名要保持一致。

图八

八、在led.v文件中输入如下内容。

moduleled(clk,ledkey_d,led_oe);

inputclk;

outputled_oe;

output[7:

0]ledkey_d;

reg[7:

0]ledkey_d;

regled_oe;

reg[28:

0]count;

wire[2:

0]fclk;

wire[2:

0]mode;

reg[7:

0]led0,led1,led2,led3,led4,led5,led6,led7;

assignfclk[2:

0]=count[25:

23];

assignmode[2:

0]=count[28:

26];

always@(posedgeclk)

begin

count=count+1;

end

always@(fclk)//mode0

begin

case(fclk)

3'b000:

led0=8'b11111110;

3'b001:

led0=8'b11111101;

3'b010:

led0=8'b11111011;

3'b011:

led0=8'b11110111;

3'b100:

led0=8'b11101111;

3'b101:

led0=8'b11011111;

3'b110:

led0=8'b10111111;

3'b111:

led0=8'b01111111;

endcase

end

always@(fclk)//mode1

begin

case(fclk)

3'b000:

led1=8'b01111111;

3'b001:

led1=8'b10111111;

3'b010:

led1=8'b11011111;

3'b011:

led1=8'b11101111;

3'b100:

led1=8'b11110111;

3'b101:

led1=8'b11111011;

3'b110:

led1=8'b11111101;

3'b111:

led1=8'b11111110;

endcase

end

always@(fclk)//mode2

begin

case(fclk)

3'b000:

led2=8'b01111110;

3'b001:

led2=8'b10111101;

3'b010:

led2=8'b11011011;

3'b011:

led2=8'b11100111;

3'b100:

led2=8'b11100111;

3'b101:

led2=8'b11011011;

3'b110:

led2=8'b10111101;

3'b111:

led2=8'b01111110;

endcase

end

always@(fclk)//mode3

begin

case(fclk)

3'b000:

led3=8'b11111110;

3'b001:

led3=8'b11111100;

3'b010:

led3=8'b11111000;

3'b011:

led3=8'b11110000;

3'b100:

led3=8'b11100000;

3'b101:

led3=8'b11000000;

3'b110:

led3=8'b10000000;

3'b111:

led3=8'b00000000;

endcase

end

always@(fclk)//mode4

begin

case(fclk)

3'b000:

led4=8'b01111111;

3'b001:

led4=8'b00111111;

3'b010:

led4=8'b00011111;

3'b011:

led4=8'b00001111;

3'b100:

led4=8'b00000111;

3'b101:

led4=8'b00000011;

3'b110:

led4=8'b00000001;

3'b111:

led4=8'b00000000;

endcase

end

always@(fclk)//mode5

begin

case(fclk)

3'b000:

led5=8'b00000000;

3'b001:

led5=8'b11111111;

3'b010:

led5=8'b00000000;

3'b011:

led5=8'b11111111;

3'b100:

led5=8'b00000000;

3'b101:

led5=8'b11111111;

3'b110:

led5=8'b00000000;

3'b111:

led5=8'b11111111;

endcase

end

always@(fclk)//mode6

begin

case(fclk)

3'b000:

led6=8'b01010101;

3'b001:

led6=8'b10101010;

3'b010:

led6=8'b01010101;

3'b011:

led6=8'b10101010;

3'b100:

led6=8'b01010101;

3'b101:

led6=8'b10101010;

3'b110:

led6=8'b01010101;

3'b111:

led6=8'b10101010;

endcase

end

always@(fclk)//mode7

begin

case(fclk)

3'b000:

led7=8'b11111100;

3'b001:

led7=8'b11111001;

3'b010:

led7=8'b11110011;

3'b011:

led7=8'b11100111;

3'b100:

led7=8'b11001111;

3'b101:

led7=8'b10011111;

3'b110:

led7=8'b00111111;

3'b111:

led7=8'b01111110;

endcase

end

always@(mode)

begin

led_oe=1'b0;

case(mode)

3'b000:

ledkey_d=led0;

3'b001:

ledkey_d=led1;

3'b010:

ledkey_d=led2;

3'b011:

ledkey_d=led3;

3'b100:

ledkey_d=led4;

3'b101:

ledkey_d=led5;

3'b110:

ledkey_d=led6;

3'b111:

ledkey_d=led7;

endcase

end

endmodule

九、在”编译状态显示栏”展开CompileDesign双击Analysis&Synthesis分析综合工程。

编译状态栏显示成功后,进入下一步。

十、分配管脚:

Assignment->PinPlanner进入管脚分配界面,如图九所示。

图九

十一、输入管脚号:

在”Location”一栏中输入信号对应的管脚号,如图十所示。

图十

十二:

“编译状态显示栏”如图十一所示,表示综合成功。

图十一

十三、下载执行文件到FPGA:

Tools->Programmer,或者点击Programmer图标,进入下载界面。

如果在HardwareSetup一栏显示”NoHardWare”如图十二,点击HardwareSetup

进入下载接口选择界面,双击选择,USB-Blaster,如图十三所示。

图十二

图十三

十四、退出图十三所示界面,点击图十二所示界面中的“Start”下载程序到FPGA中。

Progress状态条中显示100%后表示下载成功。

FPGA模块上的LED灯显示跑马灯现象。

第三章.SOPC快速入门

1.实验目的

熟悉NiosII系统的完整开发步骤,建立起实验台的标准硬件测试平台。

2、实验设备

硬件:

PC机

MCU-SOPC电子综合实验箱

MCU-SOPC电子综合实验箱核心板(1C12)

软件:

QuartusII9.0

NiosII9.0

3.实验内容

针对实验箱,搭建Standard硬件平台;运行简单的软件应用程序。

4.实验预习要求

阅读NiosII开发包中的文档,对NiosII、基本IP核的概念有基本了解。

5.实验原理

1)在搭建硬件平台的过程中,根据实验平台的资源对需要的IP核进行配置和添加,这

里需要熟悉基本IP核的知识和配置方法以及相关的平台器件。

IP核添加后,系统将自动将其

挂接在Avalon总线上,构成片上SOPC系统。

NiosII系统的内部结构图如下所示:

2)针对硬件平台建立软件工程,运行一个简单的HelloLED,主要用来介绍软件开发

的过;以及测试硬件平台搭建正确,支持软件正常运行。

6.实验步骤

1,搭建硬件平台。

本实验将针对实验箱资源建立一个基本的Standard硬件工程,里面

将包含NiosIICPU、三态桥(tri_state_bridge)、SystemID、时钟、flash存储器接口、

sdram存储器接口、sram存储器接口、LEDPIO、epcs_controller、Jtag通讯接口。

本实验在第三章的基础上进行,因此不再重复介绍建立Quartus工程,只是按照第三章的实验步骤建立Quartus工程添加NiosIICPU的步骤,用户也可直接打开第三章建好的工程,在其基础上完成本实验。

一.生成硬件系统

(1)按照第三章的实验步骤建立Quartus工程,并在其基础上添加一个PLL,在Tool菜单下单击MegaWizardPlugin,如下所示:

点击Next,如下图所示,选择要加入的IP核,器件,硬件语言,安装路径

点击Next,如下图所示,选择Pll核的输入频率,器件速度等级,指定输出为C0

点击第2个标签,设置clkC0,ClkC1输出频率,占空比和相移

点击第四个标签,设置输出文件

点击Finish完成,回到QuartusII主界面,如果出现一个提示窗口,点击复选框,点击确定即可

(2)在原理图编辑窗口中,双击原理图的空白处,在Library中点击Project可以看到刚刚输出的Pll模块

点击OK添加该模块

保持这个顶层文件,在Tool菜单下点击SopcBuilder,打开SOPCBuilder如下图所示:

这里选择语言和系统名字,点击OK进入SopcBuilder主界面,如下图所示:

在ComponentLibrary下双击NiosProcessor,添加并编辑NiosIICPU

选择NiosIIcore为Nios/s即标准型,其他设置不变,点击Finish回到主界面,并将CPU的名字重命名

(3)在ComponentLibrary下双击AvalonMMTristateBridge,添加并编辑三态总线

点击Finish回到主界面

(4)在ComponentLibrary下双击JTAGUART,添加并编辑Jtag通讯接口

点击Finish回到主界面

(5)按同样的方法,在下图中双击添加并编辑flash存储器接口,

这里地址选择21位,数据16位

在时序标签中做如下设置

点击Finish回到主界面。

(6)添加并编辑SDRAM控制器

在时序标签中选择默认设置,点击Finish回主界面。

(7)添加并编辑SRAM

这个组件是自定义的,软件没有自带

(8)添加并编辑SystemID,

出现一个警告,SystemID的名字必须为sysid。

点击Finish回到主界面并重命名

(9)添加并编辑EPCS控制器

,点击Finish回主界面

(10)添加并编辑定时器

,点击Finish回主界面

(11)添加并编辑并行IO口

,这里将其设置为输出口,点击Finish回主界面,并重命名为Led。

(12)此时所有组件已经添加完成,但三态桥下没有连接任何组件,所以要将flash和SRAM连接到三态桥

点击图中的空心点,将flash和SRAM连接到三态桥。

(13)双击CPU组件,设置CPU的复位地址为Flash,异常地址为SDRAM,点击Finish回主界面

(14)双击tri_state_bridge_0,在ShareSignal标签中设置Flash核SRAM的地址,读写信号为共享

(15)在设置SRAM的基地址为0x100000,并点击左边的锁,

System菜单下点击AutoassignBase-adress

(15)此时,所有准备工作完毕,点击Generate等待生成系统,系统生成完毕后点击Exit,回到QuartusII主界面

按照第三章将原理图画完并分配管脚

综合产生编程文件。

二.生成软件系统

(1)打开NiosIDE,

(2)在NiosIIC/C++Projects下的空白处右键,选择New->NiosIIC/C++Aplication,这里新建一个名为HelloLED的空应用工程,存放目录为刚才新建的硬件系统刚才的目录

点击Finish回到NiosIDE主界面

(3)右键

新建源文件,在弹出的对话框指定源文件名称和存放路径

(4)编辑,保存源文件

(5)设置工程属性,右键工程,点击SystemLibraryProperities

点击OK回到主界面。

(6)右键HelloLED,点击BuildProject开始编译工程。

从信息窗口看出,软件编译了Hello_LED.c,并产生elf文件和flash文件

(7)全速运行程序,给实验箱或者核心板通电,下载硬件编程文件到核心板,右键HelloLED->Runas->NiosIIhardware,即可以看到核心板上的LED做流水灯显示

 

第四章MCU部分实验

实验一流水灯实验

一、实验目的

(1)了解二极管与单片机接口。

(2)了解二极管编程方法。

二、实验内容

多种方式循环点亮发光二极管。

三、实验接线图

四、实验步骤

(一)运行KEIL软件

(二)在KEIL中打开waterlight工程

(三)编译链接KEIL工程

(四)运行STC-ISP.EXE软件,下载waterlight.hex文件到MCU

(五)MCU模块发光二极管部分,显示流水灯效果。

五、思考

改变延时常数,使发光二极管闪亮时间改变,修改程序,使发光二极管闪亮移动方向改变。

六、程序清单文件名waterlight.c

#include

#include

#defineucharunsignedchar

#defineuintunsignedin

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1