1、 现 代 逻 辑 课程设计 报告现 代 逻 辑 课程设计 报告 题目题目: 四选一选择器 专 业 计算机科学与技术 班 级 _11 计算机 1 班 _ 姓 名 学 号 实验报告 验收成绩 平时成绩 总成绩 2013 年 7 月 03 日 2 一、实验目的一、实验目的 理解并掌握现代逻辑设计的基本方法, 学会使用原理图或硬件描述语言方式对电 路建模,并进行仿真测试。 二、实验环境二、实验环境 PC 机 1 台、ModelSim XE 仿真软件 1 套、Xlink 软件一套。 三、三、实验内容实验内容 1 1、顶层模块图及接口说明、顶层模块图及接口说明 该实验有四个输入 a、b、c、d(3:0),
2、一个判断位 s(1:0),一个输出 y(3:0). 当判断位 s 的值为“00”时,输出 y 的值为输入 a 的值;当判断位 s 的值为“01” 时,输出 y 的值为输入 b 的值;当判断位 s 的值为“10”时,输出 y 的值为输入 c 的值;当判断位 s 的值为“11”及其他所有可能取值,即 s=others 时,输出 y 的值为输入 d 的值; 即 输入 a 输入 b 输入 c 输入 d 判断位 s 输出 y 0 1 1 1 00 0 1 0 0 0 00 1 1 0 1 1 01 0 0 1 0 0 01 1 1 1 0 1 10 0 0 0 1 0 10 1 1 1 1 0 othe
3、rs 0 0 0 0 1 others 1 2 2、内部电路电路或、内部电路电路或 VERILOGVERILOG 模型模型 下面的源代码给出 verilog程序,实现了各项功能, 程序源代码如下: library IEEE; use IEEE.STD_LOGIC_1164.ALL; 3 use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; - Uncomment the following lines to use the declarations that are - provided for instantiating
4、 Xilinx primitive components. -library UNISIM; -use UNISIM.VComponents.all; entity jie is port(a,b,c,d:in std_logic_vector(3 downto 0); s:in std_logic_vector(1 downto 0); y:out std_logic_vector(3 downto 0); end jie; architecture Behavioral of jie is begin y=a when s=“00“ else b when s=“01“ else c wh
5、en s=“10“ else d when s=“11“ else “0000“; end Behavioral; 3 3、测试用例和测试波形、测试用例和测试波形 4 四、实验步骤(出现的问题和解决的方法)四、实验步骤(出现的问题和解决的方法) 实验开始我是先网上搜索资料了解 VHDL 语言及相关设计。然后用老师给的实验 指导书,参考上面的例题在软件上做了几遍,目的是熟悉实验步骤。这过程中也 遇到一些问题,比如在完成一个步骤后不知道下一步怎么做,不过同学多这问题 也好解决, 请教他们一会儿就好了。 熟悉实验步骤后, 我去图书馆借了专业书籍, 这样对做作业和理解作业都有帮助。实验做起来倒是很快,
6、代码参考的书上的, 所以一会儿就到了测试结果的阶段, 不过在这个中间却老是出错, 一直测试不了。 重复做了几遍后还是这个问题,最后只得一句一句地检查代码,终于发现错误是 因为代码里少了一个后括号。改正后程序就正常了,不过结果有点小毛刺。操作 了几遍后发现还有个更大的问题,就是输出的正确率只有 50%。本来我还想自己 想办法解决的,后来发现能力有限,再加上大家都是刚接触这个,所以同学也不 怎么能帮上忙。所以我把代码基本改掉了。这一过程我对这个软件进一步熟悉, 操作起来更方便了, 结果很快出来了, 并且在我的测试过程中结果一直是正确的。 五、实验结果五、实验结果 5 序序 号号 输入数据输入数据 仿真结果仿真结果 正确结果正确结果 仿 真结 果的仿 真结 果的 正确性正确性 1 1 a=0000,b=0000 c=0001,d=0001 s=01 y=0000 y=0000 正确 2 2 a=1010,b=0110 c=1100,d=1101 s=00 y=1010 y=1010 正确 3 3 a=0001,