利用拨码开关控制点阵进行汉字.docx

上传人:b****3 文档编号:5395321 上传时间:2023-05-08 格式:DOCX 页数:11 大小:755.26KB
下载 相关 举报
利用拨码开关控制点阵进行汉字.docx_第1页
第1页 / 共11页
利用拨码开关控制点阵进行汉字.docx_第2页
第2页 / 共11页
利用拨码开关控制点阵进行汉字.docx_第3页
第3页 / 共11页
利用拨码开关控制点阵进行汉字.docx_第4页
第4页 / 共11页
利用拨码开关控制点阵进行汉字.docx_第5页
第5页 / 共11页
利用拨码开关控制点阵进行汉字.docx_第6页
第6页 / 共11页
利用拨码开关控制点阵进行汉字.docx_第7页
第7页 / 共11页
利用拨码开关控制点阵进行汉字.docx_第8页
第8页 / 共11页
利用拨码开关控制点阵进行汉字.docx_第9页
第9页 / 共11页
利用拨码开关控制点阵进行汉字.docx_第10页
第10页 / 共11页
利用拨码开关控制点阵进行汉字.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

利用拨码开关控制点阵进行汉字.docx

《利用拨码开关控制点阵进行汉字.docx》由会员分享,可在线阅读,更多相关《利用拨码开关控制点阵进行汉字.docx(11页珍藏版)》请在冰点文库上搜索。

利用拨码开关控制点阵进行汉字.docx

利用拨码开关控制点阵进行汉字

1、课程设计目的

1.学习操作数字电路设计实验开发系统,掌握点阵显示模块的工作原理及应用。

2.掌握组合逻辑电路、时序逻辑电路的设计方法。

3.学习掌握可编程器件设计全过程。

2、课程设计内容和要求:

2.1、设计内容

利用拨码开关控制点阵进行汉字显示,包括可调数字信号源、拨码开关控制模块以及点阵显示模块。

2.2、设计要求

1.学习掌握拨码开关控制模块、点阵模块的工作原理及应用;

2.熟练掌握VHDL编程语言,编写拨码开关控制模块的控制逻辑;

3.仿真所编写的程序,模拟验证所编写的模块功能;

4.下载程序到芯片中,硬件验证所设置的功能,能够实现汉字的显示;

5.整理设计内容,编写设计说明书。

3、设计方案及实现情况

3.1、设计思路

根据题目设计要求,本系统拟采用自顶向下设计方法,顶层采用原理图设计方法,将整个系统分为分频模块、拨码开关控制模块、点阵显示三个模块。

通过对各模块编写程序实现模块功能,最后将三个模块进行综合实现整个系统的功能,通过拨码开关控制点阵进行汉字显示。

3.2、工作原理及框图

系统的输入信号有:

分频器时钟信号clk,按键控制cn[1..0]。

系统的输出信号有:

点阵数据输出q[0..15],列选择信号输出sel[0..3]。

系统通过拨码开关高低电位来控制按键cn[1..0],外加分频时钟信号clk控制输出sel[0..3],控制最终的输出端q[0..15]。

整体设计原理图如图1:

图1系统整体设计原理图

3.3、各模块功能描述

(1)分频模块,对时钟进行分频,原理图如图2

图2分频模块原理图

程序代码如下:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

useieee.std_logic_arith.all;

entityfenpinis

port(clk:

instd_logic;

clkout:

outstd_logic);

endfenpin;

architecturexxxoffenpinis

signala:

std_logic;

signaln:

std_logic_vector(2downto0);

begin

process(clk)

begin

ifclk'eventandclk='1'then

ifn="100"then

n<="000";

a<=nota;

else

n<=n+1;

endif;

endif;

endprocess;

clkout<=a;

endxxx;

(2)功能控制模块模块(cnta):

利用时钟进行十六进制计数,控制列信号从0000-1111变化,原理图如图3

图3cnta模块原理图

程序代码如下:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitycntais

port(clk:

instd_logic;

q:

outstd_logic_vector(0to3));

endcnta;

architecturexxxofcntais

begin

process(clk)

variableqwe:

std_logic_vector(3downto0);

begin

ifclk'eventandclk='1'then

ifqwe="1111"then

qwe:

="0000";

else

qwe:

=qwe+1;

endif;

endif;

q<=qwe-1;

endprocess;

endxxx;

(3)点阵显示模块(cora):

此模块对应产生列选择信号,通过拨码开关ch[1..0]控制汉字的显示,原理图如图4

图4cora模块原理图

程序代码如下:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitycorais

port(ch:

instd_logic_vector(1downto0);

sel:

instd_logic_vector(0to3);

q:

outstd_logic_vector(15downto0));

endcora;

architecturexxxofcorais

begin

process(ch,sel)

begin

casechis

when"00"=>

caseselis

when"0000"=>q<="0000000000000000";

when"0001"=>q<="0000000000000000";

when"0010"=>q<="0000100000000000";

when"0011"=>q<="0001111111111111";

when"0100"=>q<="0000100001000010";

when"0101"=>q<="0000100001000010";

when"0110"=>q<="0000100001000010";

when"0111"=>q<="0000100001000010";

when"1000"=>q<="0000100001000010";

when"1001"=>q<="0000100001000010";

when"1010"=>q<="1100100001000010";

when"1011"=>q<="0010100001000010";

when"1100"=>q<="0001111111111111";

when"1101"=>q<="0000100000000000";

when"1110"=>q<="0000000000000000";

when"1111"=>q<="0000000000000000";

whenothers=>null;

endcase;

when"01"=>

caseselis

when"0000"=>q<="0000000000000000";

when"0001"=>q<="0000000000000000";

when"0010"=>q<="0000111111111110";

when"0011"=>q<="0000100000000100";

when"0100"=>q<="0000100000000100";

when"0101"=>q<="0000100000000100";

when"0110"=>q<="0000111111111110";

when"0111"=>q<="0000000000000000";

when"1000"=>q<="0000100000000010";

when"1001"=>q<="0000111110000100";

when"1010"=>q<="0000100001001000";

when"1011"=>q<="0111100000010000";

when"1100"=>q<="0000101110101000";

when"1101"=>q<="0000100001000100";

when"1110"=>q<="0000000000000000";

when"1111"=>q<="0000000000000000";

whenothers=>null;

endcase;

when"10"=>

caseselis

when"0000"=>q<="0000000000000000";

when"0001"=>q<="0000000000000000";

when"0010"=>q<="0000110000000110";

when"0011"=>q<="0110010000001000";

when"0100"=>q<="0010010111110011";

when"0101"=>q<="0011010101010001";

when"0110"=>q<="0010110101010001";

when"0111"=>q<="0110010101010111";

when"1000"=>q<="1010010101010101";

when"1001"=>q<="0010110101010001";

when"1010"=>q<="0011010101010001";

when"1011"=>q<="0010010111110111";

when"1100"=>q<="0010010000000100";

when"1101"=>q<="0000010000000011";

when"1110"=>q<="0000000000000000";

when"1111"=>q<="0000000000000000";

whenothers=>null;

endcase;

whenothers=>null;

endcase;

endprocess;

endxxx;

3.4、仿真结果

(1)分频模块仿真图如图5

图5分频模块仿真图

(2)功能控制模块(cnta)仿真图如图6

图6功能控制模块仿真图

(3)点阵显示模块(cora)仿真图如图7

图7点阵显示模块仿真图

(4)整体模块仿真图如图8

图8整体模块仿真图

3.5、实验箱验证情况

通过拨码开关cn[1..0]控制汉字的显示

4、课程设计总结

通过这学期课程设计,使我对可编程逻辑器件这门课程有了更加深刻的认识,并且对VHDL语言有了进一步的了解。

学习了如何利用拨码开关控制点阵进行汉字显示的输出。

最初拿到课程设计说明书时,感觉每个模块在实验时都用过,心想只要把每个模块组合到一起就能实现系统功能,但结果其实不然。

在用VHDL语言进行设计时,时序问题需要我们特别关注。

否则在实验箱上进行验证时不会输出正确结果。

完成此次设计后,不仅能对QuartusⅡ开发仿真软件的操作更加熟练,真正做到学以致用;同时掌握了点阵显示的工作原理。

通过此次课程设计,感受到平常的学习在注重理论知识掌握的基础上,要特别重视实验环节。

只有通过不断的实践,我们才能把知识掌握的更牢固,理解的更透彻。

5、参考文献

(1)侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计.西安:

西安电子科技大学出版社,1999

(2)求是科技.CPLD/FPGA应用开发技术与工程实践.北京:

人民邮电出版社,2005

(3)罗苑棠.CPLD/FPGA常用模块与综合系统设计实例精讲.北京:

电子工业出版社,2007

(4)任勇峰,庄新敏.VHDL与硬件实现速成.北京:

国防工业出版社,2005

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2