




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SOPC-NIOSII EDA/SOPC System Platform EDA基础篇 16*16点阵显示实验引言当今,数字系统的设计可以直接面向用户的需求,根据系统功能的要求,从上到下逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件。而FPGA(Field Programmable Gate Array,现场可编程门镇列)以设计灵活及速度快的特点,在数字专用集成电路的设计中得到了广泛应用。本文介绍的汉字显示系统,将16*16点阵与FPGA巧妙结合,采用VHDL(VHSIC Hardware Description Language,硬件描述语言)进行功能描述一、 点阵显示原理1 点阵模块说明 此设计采用4块8*8的点阵块组成16*16的点阵显示模块1.1 8*8点阵块工作原理如图1所示。8*8点阵块工作方式:Q端加正电压,COM端接地时发光二管点亮。例如,当COM8接地且Q1Q8分别接高电平时,第一行亮。同理,当COM7接地,Q1Q8分别接高电平时,第二行亮。依此类推。当Q5端加高电平时,分别让COM1COM8接地,第一列亮。其它列依此类推。1.216*16点阵模块用4块8*8的点阵块组成16*16的点阵模块显示汉字,连接关系如图2所示。Q0Q15成为点阵块的行线,COM0COM15形成点阵块的列线。1.3 行列驱动由循环计数器输出经放大后的驱动点阵,形成动态扫描,分别控制一列中的每个灯,当列线发出信号后,行线同时发出数据,这样就将一个汉字由左到右分成16列。在完成各列的同时,行线发出行数据,一个循环就可以将一个汉字完整的重现在16*16的点阵模块上。 本实验主要完成汉字字符在LED上的显示,16*16扫描LED点阵的工作原理与8位扫描数码管类似,只是显示的方式与结果不一样而已。下面就本实验系统的16*16点阵的工件原理做一些简单的说明。16*16点阵由此256个LED通过排列组合而形成16行*16列的一个矩阵式的LED阵列,俗称16*16点阵。单个的LED的电路如下图11-1所示:图11-1 单个LED电路图由上图可知,对于单个LED的电路图当Rn输入一个高电平,同时Cn输入一个低电平时,电路形成一个回路,LED发光。也就是LED点阵对应的这个点被点亮。16*16点阵也就是由16行和16列的LED组成,其中每一行的所有16个LED的Rn端并联在一起,每一列的所有16个LED的Cn端并联在一起。通过给Rn输入一个高电平,也就相当于给这一列所有LED输入了一个高电平,这时只要某个LED的Cn端输入一个低电平时,对应的LED就会被点亮。具体的电路如下图11-2所示:图11-2 16*16点阵电路原理图在点阵上显示一定有字符是根据其字符在点阵上的显示的点的亮灭来表示的如下图11-3所示: 图11-3 字符在点阵上的显示在上图中,显示的是一个“汉”字,只要将被“汉”字所覆盖的区域的点点亮,则在点阵中就会显示一个“汉”字。根据前面我们所介绍的点阵显示的原理。当我们选中第一列后,根据要显示汉字的第一列中所需要被点亮的点对应的Rn置为高电平,则在第一列中需要被点亮的点就会被点亮。依此类推,显示第二列、第三列第N列中需要被点亮的点。然后根据人眼的视觉原理,将每一列显示的点的间隔时间设为一定的值,那么我们就会感觉显示一个完整的不闪烁的汉字。同时也可以按照这个原理来显示其它的汉字。下图11-4是一个汉字显示所需要的时序图:图11-4 显示时序图在上图中,在系统时钟的作用下,首先选取其中的一列,将数据输入让这列的LED显示其数据(当为高电平时LED发光,否则不发光)。然后选取下一列来显示下一列的数据。当完成一个16*16点阵的数据输入时,即列选择计数到最后一列后,再从第一列开始输入相同的数据。这样只要第一次显示第一列的数据和第二次显示第一列的数据的时间足够短,那么人的眼睛就会看到第一列的数据总是显示的,而没有停顿现象。同样的道理其它列也是这样,直到显示下一个汉字。在实际的运用当中,一个汉字是由多个八位的数据来构成的,那么要显示多个汉字的时候,这些数据可以根据一定的规则存放到存储器中,当要显示这个汉字的时候只要将存储器中对应的数据取出显示即可。本实验的示例程序依次显示的是“欢迎使用嵌入式SOC开发系统 ”。数据量不大,所以没有放入存储器中,而在程序中直接输入对应的一个16位的数据。示例程序的字库数据的格式如下图11-5所示:图11-5 字库格式 图11-7 16*16点阵显示的电路框图二、 实验内容本实验要求完成的任务是通过编程实现对16X16点阵的控制。在点阵的循环显示“欢迎使用嵌入式SOC开发系统 ”这几个汉字和字符。16*16点阵的电路原理在前面已经做了详尽的说明,在此实验中,16*16点阵由4个8*8点阵组成,考虑到LED电流功耗与FPGA电流功耗的关系,在实验的电路中加入驱动电路。具体电路如下图11-6所示。与FPGA的管脚连接如表11-1所示。图11-6 16*16点阵电路图信号名称对应FPGA管脚名说明DOT-C0W19点阵的第1列输入端口DOT-C1U17点阵的第2列输入端口DOT-C2R8点阵的第3列输入端口DOT-C3T8点阵的第4列输入端口DOT-C4U7点阵的第5列输入端口DOT-C5W8点阵的第6列输入端口DOT-C6W10点阵的第7列输入端口DOT-C7Y11点阵的第8列输入端口DOT-C8AB18点阵的第9列输入端口DOT-C9AA18点阵的第10列输入端口DOT-C10AB20点阵的第11列输入端口DOT-C11AA20点阵的第12列输入端口DOT-C12AB21点阵的第13列输入端口DOT-C13W17点阵的第14列输入端口DOT-C14Y15点阵的第15列输入端口DOT-C15Y13点阵的第16列输入端口DOT-R0AD8点阵的第1行输入端口DOT-R1AC9点阵的第2行输入端口DOT-R2AD10点阵的第3行输入端口DOT-R3AC10点阵的第4行输入端口DOT-R4AD11点阵的第5行输入端口DOT-R5AC11点阵的第6行输入端口DOT-R6AD12点阵的第7行输入端口DOT-R7AC12点阵的第8行输入端口DOT-R8AD4点阵的第9行输入端口DOT-R9AC5点阵的第10行输入端口DOT-R10AD5点阵的第11行输入端口DOT-R11AC6点阵的第12行输入端口DOT-R12AD6点阵的第13行输入端口DOT-R13AC7点阵的第14行输入端口DOT-R14AD7点阵的第15行输入端口DOT-R15AC8点阵的第16行表11-1 16X16点阵与FPGA的管脚连接表三、 实验步骤 下面我们建立一个点阵显示的VHDL工程1)选择 开始 程序 Altera QuartusII5.1,运行QUARTUSII软件。或者双击桌面上的QUARTUSII的图标运行QUARTUSII软件,出现如图1-3所示。 图1-3 QUARTUSII软件运行界面2)选择软件中的菜单File New Project Wizard,新建一个工程。如图1-4所示。 图1-4 新建工程对话框3)点击图1-4中的NEXT进入工作目录,工程名的设定对话框如图1-5所示。第一个输入框为工程目录输入框,用户可以输入如e:/eda等工作路径来设定工程的目录,设定好后,所有的生成文件将放入这个工作目录。第二个输入框为工程名称输入框,第三个输入框为顶层实体名称输入框。用户可以设定如EXP1,一般情况下工程名称与实体名称相同。使用者也可以根据自已的实际情况来设定工程名和顶层文件名。注:本处的顶层文件名必须和程序的实体名一致,否则编译会出错。图1-5 指定工程名称及工作目录4)点击NEXT,进入下一个设定对话框,按默认选项直接点击NEXT进行器件选择对话框。如图1-6所示。这里我们以选用CycloneII系列芯片EP2C35F672C8为例进行介绍。用户可以根据使用的不同芯片来进行设定。图1-6 器件选择界面首先在对话框的左上方的Family下拉菜单中选取CycloneII,在中间右边的Speed grade下拉菜单中选取8,在左下方的Available devices框中选取EP2C35F672C8,点击NEXT完成器件的选取,进入EDA TOOL设定界面如图1-7所示。图1-7 EDA TOOL对话框5)按默认选项,点击Next出现新建工程以前所有的设定信息,如图1-8所示,点击Finish完成新建工程的建立。图1-8 新建工程信息2、建立VHDL设计文件1)在创建好设计工程后,选择File NEW菜单,出现图1-9所示的新建设计文件类型选择窗口。这里我们以建立VHDL设计文件为例进行说明。图1-9 新建设计文件选择窗口2)在New对话框(图1-9)中选择Device Design Files页下的VHDL File,点击OK按钮,打开图形编辑器对话框,如图1-10所示。图中标明了常用的每个按钮的功能3) 在文本编辑器中输入如下VHDL程序:-下面是引用库 library ieee; -库函数use ieee.std_logic_1164.all;-定义了std_logic数据类型及相应运算use ieee.std_logic_arith.all;-定义了signed和unsigned数据类型、相应运算和相关类型转换函数use ieee.std_logic_unsigned.all;-定义了一些函数,可以使std_logic_vector类 -型被当作符号数或无符号数一样进行运算-entity exp11 is -exp11为实体名 port( clk : in std_logic; -时钟输入 keyc : out std_logic_vector(15 downto 0); -点阵列控制 keyr : out std_logic_vector(15 downto 0) -点阵行显示 ); end exp11;-结束实体-architecture behave of exp11 is -behave为结构体名 signal cdount : std_logic_vector(3 downto 0);-信号量 表示列扫描频率 signal dount : std_logic_vector(8 downto 0);-计数, signal S : std_logic_vector(3 downto 0);-单个汉字的扫描周期 begin process(clk) -显示时序控制 进程1 begin -以begin为标志开始结构体的描述 if clkevent and clk=1 then -上升沿 dount=dount+1;-计数累加 if dount=255 then if S=15 then S=0000; else s=S+1; end if; s=s+1; else s=S; end if; if cdount15 then -控制列扫描频率 cdount=cdount+1; else cdountkeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyr10 then case cdount is when 0000=keyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyrkeyr=1111111111111111; end case; end if; end process;-结束进程2 各个进程之间是并发执行的 end behave;-结束结构体behave关于VHDL,我们以上面点阵显示程序为例来解释VHDL的语法构成,以使大家对VHDL有个整体的把握。一个VHDL程序有三部分构成,其为 : 1.库和包 library(设计资源);2. 实体 entity(外部端口)3. 结构体 architecture(内部结构) 库和包 library(设计资源)的介绍1.1 use ieee.std_logic_1164.all;-定义了std_logic数据类型及相应运算1.2 use ieee.std_logic_arith.all;-定义了signed和unsigned数据类型、相应运算-和相关类型转换函数1.3 use ieee.std_logic_unsigned.all;-定义了一些函数,可以使std_logic_vector-类型被当作符号数或无符号数一样进行运算本程序中用到3个库函数包:如下 : 补充:当使用库时,需要说明使用的库名称,同时需要说明库中包集合的名称及范围;每个实体都应独立进行库的说明;库的说明应该在实体之前;经过说明后,实体和结构体就可以自动调用库中的资源; 实体 entity(外部端口)ntity exp11 is -exp11为实体名 port( clk : in std_logic; -时钟输入 keyc : out std_logic_vector(15 downto 0); -点阵列控制 keyr : out std_logic_vector(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 原料纯铁(粗钢)企业ESG实践与创新战略研究报告
- 同步器齿环用铜合金企业ESG实践与创新战略研究报告
- 胶乳凝固槽企业ESG实践与创新战略研究报告
- 财产文书代理服务企业ESG实践与创新战略研究报告
- 聚酯基光学膜企业数字化转型与智慧升级战略研究报告
- 窗式空调器企业ESG实践与创新战略研究报告
- 业务开展合同标准文本
- 创意小区合同标准文本
- 加工中心维修合同标准文本
- 公司出让股权合同标准文本
- 奖品、礼品供应服务方案
- 八年级历史下第一单元复习教案
- 不动产登记数据安全保密责任书
- 物业小区保洁清洁方案
- 银行从业资格考试题库附参考答案(共791题精心整理)
- 年产20吨阿齐沙坦原料药生产车间的设计和实现材料学专业
- 原地面高程复测记录表正式版
- 高等学校建筑学专业本科(五年制)教育评估标准
- 沪宁城际接触网专业验收标准
- MQ2535门座起重机安装方案
- 过程审核VDA6.3检查表
评论
0/150
提交评论