基于fpga的数字跑表设计毕业论文(编辑修改稿)内容摘要:

logic; clk0 : in std_logic。 enable : out std_logic)。 end control。 architecture rtl of control is signal strobe : std_logic。 begin process (sysreset,reset0,on_off0) begin if (sysreset=‟1‟ or reset0 = ‟1‟) then strobe = „0‟。 elsif (on_off0‟event and on_off0 = ‟1‟ ) then strobe = not strobe。 end if。 end process。 enable = strobe。 end rtl。 图 控制模块 仿真波形 跑表计时模块 跑表计时模块主要就是面对跑表的计时工作,由系统分频 来支配计时的工作,由控制电路的信号来安排跑表。 计时模块有八个部分组成,它们分别是:小时十位信号、小时各位信号、分十位、分个位、秒十位、秒个位、秒 、秒 信号组成的。 15 它是讲 1 个三进制计数器、 5 个十进制和 2 个六进制的计数器串连在一起的,从而来实现这个跑表计时模块的功能效果。 由以上条件和功能形成的跑表的计时模块的结构框图如 所示。 下面我们就要用源代码来描述一下三进制的、六进制的和十进制的计数器。 源代码 5 library ieee。 use。 use。 use。 entity count10 is port ( reset : in std_logic。 enable : in std_logic。 clk : in std_logic。 cout : out std_logic。 q : out std_logic_vector(3 downto 0))。 end count10。 architecture rtl of count10 is signal q_tmp : std_logic_vector(3 downto 0)。 begin process(clk) begin if (clk‟event and clk =‟1‟) then if (reset = ‟1‟) then q_tmp = (others = „0‟)。 elsif (enable =‟1‟) then if (q_tmp =”1001”) then q_tmp = (others = „0‟)。 else q_tmp = q_tmp+1。 end if。 16 end if。 end if。 q = q_tmp。 end process。 cout = „1‟ when q_tmp =”1001” and enable =‟1‟ else „0‟。 end rtl。 图 跑表计时模块的结构框图 在这些计时的 VHDL 语言描述中,用元件形式调用计数器。 但跑表的计时模块的VHDL 源代码如下所示 图 计时模块 仿真波形 17 跑表显示模块 跑表的理论上已经成立了,但要想供大家观测吸入信息,所以还 是需要八个七段的LED 显示数码管来展现给大家信息。 跑表显示模块的结构框图 如图 所示。 图 跑表显示模块的结构框图 跑表的显示模块由 count位选择电路、译码电路、位选择译码四个电路部分组成。 下面就来描述一下显示模块的电路。 首先描述的是 八进制计数器 count8,这个八进制计数器没有使能端口 enable 和进位输出端口 cout,它的结构与计数器的结构 基本上是相同 的。 它的电路 VHDL 语言的描述如源代码 6 所示。 源代码 6 library ieee。 use。 use。 use。 entity count8 is port ( reset : in std_logic。 clk : in std_logic。 sel : out std_logic_vector(2 downto 0))。 end count8。 architecture rtl of count8 is signal sel_tmp : std_logic_vector(2 downto 0)。 18 begin process(clk) begin if (clk‟event and clk =‟1‟) then if (reset = ‟1‟) then sel_tmp = (others = „0‟)。 elsif (sel_tmp =”111”) then sel_tmp = (others = „0‟)。 else sel_tmp = sel_tmp+1。 end if。 end if。 sel = sel_tmp。 end process。 end rtl。 显示位选的电路功能是根据 count8 的输出来表示的,可将他的信号传输到一个七段显示数码管的 choose 信号上。 当输出为 000 时,这里的选通信号就被翻译成了 00000001了。 具体的显示位选的译码 电路的 VHDL 的描述如下所示。 计时位选电路的输出端口的计时数据的位数 三种。 分别是 2 位的、 3 位 和 4 位的 计时数据。 图 segment 信号与数码管的关系 上面对的是数码管其中一位的显示模块,它由七个块组成的,每个位置都代表着一个信号由 0、 6 来组成的信号体。 19 七段显示译码电路 VHDL 描述如源代码 7 所示。 源代码 7 library ieee。 use。 entity seg7 is port( q : in std_logic_vector(3 downto 0)。 segment : out std_logic_vector(6 downto 0))。 end seg7。 architecture rtl of seg7 is begin process(q) begin case q is when “0000” = segment = “0111111”。 when “0001” = segment = “0000110”。 when “0010” = segment = “1011011”。 when “0011” = segment = “1001111”。 when “0100” = segment = “1100110”。 when “0101” = segment = “1101101”。 when “0110” = segment = “1111101”。 when “0111” = segment = “0100111”。 when “1000” = segment = “1111111”。 when “1001” = segment = “1101111”。 when others = segment = “00000000”。 end case; end process; end rtl; 对跑表显示模块中的四个子电路描述以后,就可以进行跑表显示模块的总体功能描述了。 20 图 显示模块 仿真波形 仿真结果 仿真步骤: (1)建立一个波形编辑文件: FileNEWWaveform Editor file; (2)鼠标指到左边区域,左键 —右键,选中; (3) List移动管脚 OK,把仿真用的管脚调出来; (4)设定参数: OptionsGrid size。 FileEnd Time。 ViewTime range; (5)给定输入信号; (6)保存 .scf 文件; (7)MAX+PlusⅡ simulator。 仿真波形图如图 所示。 21 跑表的仿真波形 22 结 语 毕业设计 就要 结束 了 , 在 整个研究设计 的 过程 中 , 我收获了许多许多。 刚开始做毕业设计的时候是 激情澎湃 ,把毕业设计想的 很简单 ,以为跟以往的课程设计 一 样, 随便写写就完事了, 还 准备 速战速决 解决掉论文。 但是,刚开始 做 的时候就发现原来 搞 一项研究并不像想象的那样简单。 刚开始做 的时候 就发现自己的知识漏洞好多,仅 仅靠专业课本知识解决 不了 问题的,在着手之前还必须学习相关 的 知识。 在硬件调试过程中,总是出现大量莫名其妙的错误 和警告 ,有的要花费好长时间才能分析出来 问题所在,还要去结合相关的知识去调试修改。 当然,当看到自己所设计的跑表在精确地计时的时候还是很有成就感 还是很欣慰 的。 总之,本次毕业设计 后让 我真正体验到了科学研究中 那种 一丝不苟的严谨工作态度,使我 掌握了 对 VHDL 硬件描述语言的熟练运用, 培养了我采用 理论联系实际 的策略方法 ,提高 了 分析、解决计算机技术的实际问题的独立工作能力 , 能对数字跑表进行扩展 ,了解了科学研究 与系统开发的整体分析 的 步骤,并能更熟练地运用 MAX+plus Ⅱ 平台对设计进行 编译、仿真 , 以及 选用 器件,完成 系统的 功能。 通过本次设计, 也使 我 的 专业知识得到拓展,科研 的 素质得到提升,这些 都 将对我以后的学习和工作 以及研究有很大的帮助。 23 致 谢 毕业设计 任务 已经接近 了 尾声, 这也标志着 大学生活将 要画上了句号。 在这段时间里 ,我一直在老师的指导下从事 毕业设计的 学习和研究。 经过一学期的辛勤努力,此次的毕业设计也到了收尾的阶段,毕业设计的成果是用来检验一个本科生的大学期间学习到的知识水平,由于经验的 不足,在做毕业设计的时候总会有一些考虑不到的地方,所以如果没有指导老师的指点和传授经验,以及在同一时间做设计的同学们的帮助,想去很好的完成本次毕业设计是困难的。 在这里首先要感谢赵老师。 虽然老师代的课程较多,工作较忙,但作为我的指导老师在做设计的过程中,包括从最开始查阅什么参考资料,到开始拟定毕业设计题目,然后编写开题报告和论文草稿的确定,以及后期详细设计过程等丁老师都给予了我严谨细心的指点。 并且在设计中有我不太懂不太会的地方,丁老师都会不厌其烦的指导我学习,认真纠正其中每个不该有的错误。 其次还要感激在学校学习期间所有教导老师,认真负责的教导我们,让我们打下坚实的专业知识基础。 同时还要感谢身边互帮互助一起努力的同学,正是你们的鼓励才能让我在繁杂的设计上坚持到底,并且最终顺利的做完本次毕业设计。 还要 感谢 在大学里的 各位传道授业解惑的老师 们 ,使我掌握了扎实的基础知识和技能,这为毕业设计的完成奠定了坚实的理论基础。 感谢本次和我一起认真做毕业设计的同学们,与他们的交流,不仅让我学到了有关专业方面的许多知识,而且也从他们身上学到了许多优秀的品质。 感谢和我一起生活的室友,正是因为有了 他 们的支 持和鼓励,才 让我 的生活 充满快乐与温馨。 再次 向 身边所有的同学、朋友、老师 表示衷心的感谢。 最后感谢我的母校安阳工学院这两年来的全力培养。 24 参考文献 [1]姜立东 编著 . VHDL 语言程序设计及应用 . 北京:邮电大学出版社, 2020. [2]王志鹏 编著。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。