1、课程设计报告 摘要:本次课程设计是设计一个模 7 加法器, 并用 VHDL 在结构化层面 对其进行描述,然后利用 modelsim 进行仿真,并得到期望的效果。 正文: 第一章:实验任务及原理。 (1)任务指标: 通过模 7加法器的设计,第一,加深对数字电路相关知识的理解,学 会应用,第二,初步掌握 VHDL 这种不同于 C 语言的硬件描述语言, 第三,了解并熟悉 modelsim 仿真软件的使用方法。 (2)功能需求: 设计模 7 加法器,并用 VHDL 在结构层面上对其进行描述,通过仿真 验证其可行性。 (3)原理阐述: 模 7 加法器的实现电路框图在后面部分给出,这里主要从 VHDL 描
2、述 的层面给出大致原理。 先建立一个半加器实体,然后用半加器构造全 加器实体,再用全加器构造 3bit 加法器实体, 最后用 3bit 加法器构 造模 7 加法器实体。 第二章:设计思路方法及方案。 由于考虑到这次课程设计并不复杂, 因此在设计方法上采用自顶向下 和自底向上方法的结合。自顶向下, 即先确定模 7加法器的输入端口 输出端口的功能属性。自底向上,即从最低层的功能模块开始设计, 比如说,我这次就先设计半加器,然后用半加器构造全加器,之后再 用全加器构造 3bit 加法器,最终由全加器加上一部分组合逻辑电路 形成模 7 加法器。这种方式,层次结构清晰,便于描述。 第三章:原理框图及波形
3、仿真。 原理图: 波形仿真: 以上是对所有情况的输入进行了遍历, 发现结果都是与预期的结果一 致,说明仿真成功,达到了课程设计的要求。 第四章:结束语。 虽然这个课程设计比较简单,但是由于初次接触 VHDL,在用它描述 设计好的模 7 加法器时仍然感觉非常的不顺手, 但是通过连续几天的 学习 VHDL 语言,我还是掌握的 VHDL 描述电路的一些基本方法, 当然 要彻底掌握好 VHDL 还是需要大量的实践才行。 在这次课程设计中,我写了四个实体,分别是半加器,全加器,3bit 加法器,模 7 加法器,但是我只写了模 7 的 test bench。后来知道 老师给我指出了只写一个 test be
4、nch 的不足之处。比如说,在写一 个比较大的系统时,如果只对最终的系统进行仿真,而且出了问题, 我们就不知道到底是哪个地方出错,很难找出错误。而,我们要是对 每一个模块或者实体都写一个 test bench 的话,那么我们在进行仿 真是就能很快发现错误,提高设计效率。虽然这次我只写一个 test bench 也仿真成功了, 但我明白, 这只是因为这次课程设计比较简单, 以后我们真正遇到大的设计任务时, 这种方法肯定不行, 一定要养成 对每一个模块写 test bench 的习惯才行。 附加代码: (1 1)半加器)半加器 library ieee; use ieee.std_logic_11
5、64.all; entity half_adder is port(A,B:in std_logic;S,C:out std_logic); end entity; architecture behave of half_adder is begin S1:process(A,B)is begin SB,S=stemp,C=ctemp); u2:half_adder port map(A=Cin,B=stemp,C=ctemp2,S=S); CoutA(0),B=B(0),Cin=Cin,Cout=ctemp0,S=S(0); u2:full_adder port map(A=A(1),B=B
6、(1),Cin=ctemp0,Cout=ctemp1,S=S(1); u3:full_adder port map(A=A(2),B=B(2),Cin=ctemp1,Cout=Cout,S=S(2); end architecture behave; (4 4)模)模 7 7 加法器:加法器: library ieee; use ieee.std_logic_1164.all; entity mod_7_adder is port(A,B:in std_logic_vector(2 downto 0);S:out std_logic_vector(2 downto 0); end entity mod_7_adder; architecture behave of mod_7_adder is component bit_3_adder port(A:in std_logic_vector(2 downto 0); B:in std_logic_vector(2 downto 0); Cin:in std_logic; S:out std_logic_vector(2