- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
verilog实现8字节比较器.
《8字节比较器》
一、实验目的及要求
掌握基本组合逻辑电路的实现方法;
初步了解两种基本组合逻辑电路的生成方法;
学习编写测试模块。
设计一个字节数为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 陈昊, @
* @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(ab) //如果ab,则令输出为高电平
qOut =1;
else //如果ab或者a=b,则令输出为低电平
qOut =0;
endmodule
2.编写测试模块test_compare.v如下
/**
* @File test_compare.v
* @Synopsis 这是8字节比较器的测试文件
* @Author 陈昊, @
* @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
b=8 // a b,qOut = 1;
#10 a=8 b=8 // a b,qOut = 0;
#10 a=8 b=8 // a b,qOut = 1;
#10 a=8 b=8 // a = b,qOut = 0;
#10 a=8 b=8 // 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为高电平。需要一个反相器加以修正,出现这种结果的原因未知。 六、教师评语
签名:
日期: 成绩
文档评论(0)