
《8字节比较器》实验报告
| 学 院: | 软件与微电子学院 |
| 学 号: | 2008303538 |
| 姓 名: | 陈昊 |
| 专 业: | 微电子学 |
| 实验时间: | 2010年11月 |
| 实验地点: | 实验室及宿舍 |
| 指导教师: | |
2010 年 11 月
一、实验目的及要求
1、掌握基本组合逻辑电路的实现方法;
2、初步了解两种基本组合逻辑电路的生成方法;
3、学习编写测试模块。
4、设计一个字节数为8位的比较器,比较两个字节的大小。如a[7:0] 大于b[7:0],则输出高电平,否则输出低电平。
二、实验设备(环境)及要求
实验设备:PC机一台
环境要求:安装Modelsim仿真软件以及Synplify Pro综合工具
三、实验内容与步骤
1.根据实验要求编写源代码compare.v如下
/**
* @File compare.v
* @Synopsis 这是一个字节数为8位的比较器,比较两个字节的大小。
* 如a[7:0] 大于b[7:0],则输出高电平,否则输出低电平。
* @Author 陈昊, mouter.net@gmail.com
* @Version 1
* @Date 2010-11-05
*/
/* Copyright(C) 2010-
* By 陈昊
* All right reserved
*
*/
module compare(qOut,a,b);
input [7:0]a,b; // 输入为两个8位的数
output qOut; // 输出为一个1位的数
reg qOut; // 输出qOut是一个寄存器类型的数
always @(a or b) // 当a 或者 b发生了变化,则条件触发
if(a>b) //如果a>b,则令输出为高电平
qOut =1;
else //如果a qOut =0;
endmodule
2.编写测试模块test_compare.v如下
/**
* @File test_compare.v
* @Synopsis 这是8字节比较器的测试文件
* @Author 陈昊, mouter.net@gmail.com
* @Version 1
* @Date 2010-11-05
*/
/* Copyright(C) 2010-
* By 陈昊
* All right reserved
*/
`timescale 1ns/1ns //第一个1ns是时间单位,第二个1ns是时间精度
module test_compare; //测试向量的模块名是test
reg [7:0] a; //声明两个输入为寄存器类型,而且是8位
reg [7:0] b;
wire qOut; //声明输出为线网类型,默认为1位
initial
begin
a=8'b10000000;
b=8'b00000000; // a > b,qOut = 1;
#10 a=8'b00001000; b=8'b00001111; // a < b,qOut = 0;
#10 a=8'b10001111; b=8'b00011111; // a > b,qOut = 1;
#10 a=8'b11111111; b=8'b11111111; // a = b,qOut = 0;
#10 a=8'b10101010; b=8'b00001111; // a > b,qOut = 1;
#10 $stop;
end
compare example(.qOut(qOut),.a(a),.b(b)); //实例引用compare模块
endmodule
3.利用Modelsim编译纠错和仿真
4.利用Synplify Pro进行综合
5.利用QuartusⅡ进行布局布线
四、实验结果与数据处理
1.Modelsim仿真波形如下,自上向下信号依次为a、b、qOut
2.选择Altera STRATIX器件库利用Synplify Pro综合产生的RTL级电路如下
3.使用Quatus II进行布局布线结果如下
4.使用Modelsim进行后仿真波形如下
五、分析与讨论
1.该8字节比较器成功通过了综合和布局布线,分析发现,前仿真结果逻辑正确,当a 大于b时,qOut为高电平;当a < b时,qOut为低电平;当 a=b时,qOut也为低电平。
| 2.分析后仿真结果发现,逻辑关系出现了相反的情况,即当a 大于b时,qOut为低电平;当a < b时,qOut为高电平;当 a=b时,qOut为高电平。需要一个反相器加以修正,出现这种结果的原因未知。 | |
| 六、教师评语 签名: 日期: | 成绩 |
