ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:329.74KB ,
资源ID:6295614      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6295614.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VHDL点阵显示.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VHDL点阵显示.docx

1、VHDL点阵显示 课 程:基于FPGA的点阵显示控制器的设计学 院: 电 气 信 息 工 程 学 院 专 业: 测控技术与仪器 班 级: 姓 名: 学 号: 合作者姓名: 日 期: 一、引言随着我国经济的高速发展,对公共场合发布信息的需求日益增长,利用LED点阵滚动显示汉字的出现正好适应了这一市场需求,已经成为信息传播的一种重要手段。采用传统方法设计的汉字滚动显示器,通常需要使用单片机、存储器和制约逻辑电路来进行PCB板级的系统集成。尽管这种方案有单片机软件的支持较为灵活,但是由于受硬件资源的限制,未来对设计的变更和升级,总是难以避免要付出较多研发经费和较长投放市场周期的代价。随着电子设计自动

2、化(EDA)技术的进展,基于可编程FPGA器件进行系统芯片集成的新设计方法,也正在快速地到代基于PCB板的传统设计方式。因此,基于FPGA和VHDL语言实现在8*8点阵上的汉字静态或一屏显示问题。二、课题要求(1)技术要求1根据电路特点,用层次设计概念。将此设计任务分成若干模块,规定每一模块的功能和各模块之间的借口,透视加深层次化设计概念;2软件的原件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何熔合;3适配划分前后的仿真内容有何不同概念,仿真信号对象有何不同,有更深一步了解。熟悉了FPGA设计的调试过程中手段的多样化;4按适配划分后的管脚定位,同相关功能块硬件电路接

3、口连线;(2)功能要求1在8*8点阵上显示汉字2可以静态显示或一屏显示3利用拨码开关来实现静态显示与一屏显示切换(3)本人的工作三、设计方案(1)工作原理 8*8点阵原理:按照要求可知,点阵模块,共由8*8=64个发光二极管组成,如何在该点阵模块上显示汉字是本实验的关键。先将要显示的每幅图像画在8*8共64个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,五笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形矿上的分布以“正”为例,点阵分布为:1000000010000001111100011000000111111111100010011000100110000000(

4、2)原理框图四、单元电路设计,仿真结果与分析(1)静态显示“正”library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_Unsigned.all;use ieee.std_logic_ARITH.all;ENTITY peng isport(clk,en:in std_logic; lie:out std_logic_vector(7 downto 0); -列 com:out std_logic_vector(7 downto 0);-行End peng;Architecture a of peng issignal st1:s

5、td_logic_vector(7 downto 0);signal osc:std_logic;signal osd:std_logic;signal d_ff:std_logic_vector(27 downto 0);signal data:std_logic_vector(7 downto 0);signal d0,d1,d2,d3,d4,d5,d6,d7:std_logic_vector(7 downto 0);signal lie0,lie1,lie2,lie3,lie4,lie5,lie6,lie7:std_logic_vector(7 downto 0);Begincom=da

6、ta;lie=st1;d0=10000000;d1=10000001;d2=11110001;d3=10000001;d4=11111111;d5=10001001;d6=10001001;d7=2e8)then d_ff(27 downto 0)=0000000000000000000000000000;else d_ff(27 downto 0)=d_ff+1;end if;osc=not d_ff(10);end process first;second:process(osc)begin if(osc=1 and oscevent and en=0)then if st1(7 down

7、to 0)=00000000or st1(7 downto 0)=01111111then st1(7 downto 0)=11111110;data=d0; elsif st1(7 downto 0)=11111110then st1(7 downto 0)=11111101;data=d1; elsif st1(7 downto 0)=11111101then st1(7 downto 0)=11111011;data=d2; elsif st1(7 downto 0)=11111011then st1(7 downto 0)=11110111;data=d3; elsif st1(7 d

8、ownto 0)=11110111then st1(7 downto 0)=11101111;data=d4; elsif st1(7 downto 0)=11101111then st1(7 downto 0)=11011111;data=d5; elsif st1(7 downto 0)=11011111then st1(7 downto 0)=10111111;data=d6; elsif st1(7 downto 0)=10111111then st1(7 downto 0)=01111111;data=d7; end if;end if;end process second;end

9、a;(2)一屏显示“上下五千年”Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Use ieee.std_logic_arith.all;Entity weng isPort( Clk,en:in std_logic; lie:out std_logic_vector(7 downto 0);-列 Com:out std_logic_vector(7 downto 0);-行End weng;Architecture a of weng issignal st1:std_logic_vector(

10、7 downto 0);signal osc:std_logic;signal osd:std_logic;signal d_ff:std_logic_vector(27 downto 0);signal data:std_logic_vector(7 downto 0);signal d0,d1,d2,d3,d4,d5,d6,d7:std_logic_vector(7 downto 0);signal lie0,lie1,lie2,lie3,lie4,lie5,lie6,lie7:std_logic_vector(6 downto 0);begincom=data;lie=st1;D0=10

11、000000when lie0(6 downto 0)=0000000else00000001when lie0(6 downto 0)=0000001else10000000when lie0(6 downto 0)=0000010else00010000when lie0(6 downto 0)=0000011else00100100when lie0(6 downto 0)=0000100else00000000;D1=10000000when lie0(6 downto 0)=0000000else00000001when lie0(6 downto 0)=0000001else100

12、01001when lie0(6 downto 0)=0000010else00010100when lie0(6 downto 0)=0000011else00111011when lie0(6 downto 0)=0000100else00000000;D2=10000000when lie0(6 downto 0)=0000000else00000001when lie0(6 downto 0)=0000001else10001001when lie0(6 downto 0)=0000010else00010100when lie0(6 downto 0)=0000011else0010

13、1010when lie0(6 downto 0)=0000100else00000000;D3=11111111when lie0(6 downto 0)=0000000else11111111when lie0(6 downto 0)=0000001else11111111when lie0(6 downto 0)=0000010else11111100when lie0(6 downto 0)=0000011else00101010when lie0(6 downto 0)=0000100else00000000;D4=10010000when lie0(6 downto 0)=0000

14、000else00001001when lie0(6 downto 0)=0000001else10001001when lie0(6 downto 0)=0000010else00010010when lie0(6 downto 0)=0000011else11111110when lie0(6 downto 0)=0000100else00000000;D5=10010000when lie0(6 downto 0)=0000000else00010001when lie0(6 downto 0)=0000001else10001001when lie0(6 downto 0)=00000

15、10else00010001when lie0(6 downto 0)=0000011else00101010when lie0(6 downto 0)=0000100else00000000;D6=10010000when lie0(6 downto 0)=0000000else00100001when lie0(6 downto 0)=0000001else11111000when lie0(6 downto 0)=0000010else00010000when lie0(6 downto 0)=0000011else00101010when lie0(6 downto 0)=000010

16、0else00000000;D7=2e8)thend_ff(27 downto 0)=0000000000000000000000000000;elsed_ff(27 downto 0)=d_ff+1;end if;osc=not d_ff(10);osd=not d_ff(26);end process first;second:process(osc)beginif(osc=1 and oscevent and en=0)then if st1(7 downto 0)=00000000or st1(7 downto 0)=01111111then st1(7 downto 0)=11111

17、110;data=d0; elsif st1(7 downto 0)=11111110then st1(7 downto 0)=11111101;data=d1; elsif st1(7 downto 0)=11111101then st1(7 downto 0)=11111011;data=d2; elsif st1(7 downto 0)=11111011then st1(7 downto 0)=11110111;data=d3; elsif st1(7 downto 0)=11110111then st1(7 downto 0)=11101111;data=d4; elsif st1(7

18、 downto 0)=11101111then st1(7 downto 0)=11011111;data=d5; elsif st1(7 downto 0)=11011111then st1(7 downto 0)=10111111;data=d6; elsif st1(7 downto 0)=10111111then st1(7 downto 0)=01111111;data=d7; end if;end if;end process second;third:process(osd)beginif(osd=1 and osdevent and en=0)thenif lie0(6 dow

19、nto 0)=0000100then lie0(6 downto 0)=0000000;else lie0(6 downto 0)clk,en=a(1),com=h1,lie=l1);u2:weng port map(clk=clk,en=a(0),com=h2,lie=l2);hang=h1 or h2;lie=l1 or l2;end architecture one;六、调试结果创建工程在Quartus II 中新建一个VHDL File文件,将vhdl代码输入这个文件,并保存到工作目录,名为zong.vhd。利用new preject wizard 工具创建一个工程,工程名为zong,

20、顶层文件实体名为zong,并将上面创建的zong.vhd文件加入到工程中。编译前设置(1)选择目标芯片。用assignmemts-settings命令,弹出settings对话框,选择目标芯片为EP2C5T144C8。(2)选择工作方式,编程方式,及闲置引脚状态单击上图中的device&pin options按钮,弹出device&pin options窗口。在configuration项中,其下方的Generate compressed bitstreams处打勾,这样就能产生用于EPCS的POF压缩配置文件。在Configuration 选项页,选择配置器件为EPCS1,其配置模式选择为a

21、ctive serial。图3选择编程方式全程编译设置好前面的内容之后,就可以进行编译了。选择Processing菜单中start compilation,在窗口的下方processing栏中显示编译信息。图5 全程编译成功完成完成后在工程管理窗口左是角显示了工程zong 的层次结构和其中结构模块耗用的逻辑宏单元数。此栏的右边是编译处理流程,包括数据网表建立、逻辑综合、适配、配置文件装配和时序分析等。时序仿真(1)新建一个矢量波形文件,同时打开波形编辑器。设置仿真时间为50us,保存波形文件为zong.vwf。(2)将工程zong的端口信号名选入波形编辑器中图6 选择仿真控制仿真器参数设置。选

22、择菜单Assignment中的Settings,在Settings窗口下选择Simulator,在右侧的simulation mode项下选择timing,即选择时序仿真,并选择仿真激励文件名zong.vwf。现在所有设置进行完毕,在菜单processing项下选择start simulation,直到出现simulation was successful,仿真结束 。仿真文件simulation report 通常会自动弹出,否则选择processingsimulation report 。 程序调试的时候,要将整个系统程序分成不同的功能块进行调试,最后再加以整合。元器件清单器件名称数量杜邦线19根电阻10K欧姆3个1K欧姆8个200欧姆19个三极管90128个90138个芯片FPGA1个开关3个8*8点阵1个硬件电路与FPGA的连接硬件电路所需接至FPGA的管脚名称对应可用FPGA管脚H124H226H328H431H540H642H744H847L151L253L357L459L563L665L769L871K4

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

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