实验三: 二位比较器的设计与实现
一.实验简介:
这个实验将指导你通过使用ISE软件进行简单的二位比较器的设计与实现。
二.实验目的:
? ?
使用ISE软件设计并仿真。 学会程序下载。
三.实验原理 :
1. ISE软件是一个支持数字系统设计的开发
2.用ISE软件进行设计开发时基于相应器件型号的。
注意:软件设计时选择 的器件型号是与实际下载板上的器件型号相同。 3.图2-1所示为二位比较器的真值表,本实验中用Verilog语句来描述。
b[1] b[0] a[1] d[0]0 0 0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1a_eq_b a_gt_b a_lt_b1 0 00 1 00 1 00 1 0 0 0 1 1 0 00 1 00 1 00 0 10 0 11 0 00 1 00 0 10 0 10 0 11 0 0
四.实验步骤 :
1.新建工程
(1)双击桌面上“Xilinx ISE 12.3”图标,启动ISE软件(也可从开始菜单启动)。每次打开ISE都会默认恢复到最近使用过的工程界面。当第一次使用时,由于还没有历史工程记录,所以工程管理区显示空白。选择File—New Project选项,在弹出的对话框中输入工程名称并指定工程路径。
(2)点击Next按钮进入下一页,选择所使用的芯片及综合、仿真工具。计算机上安装的所有用于仿真和综合的第三方EDA工具都可以在下拉菜单中找到。在图中我们选用了Spartan6 XC6SLX16芯片,采用CSG324封装,这是NEXYS3开发板所用的芯片。另外,我们选择Verilog作为默认的硬件描述语言。 (3)再点击Next按钮进入下一页,这里显示了新建工程的信息,确认无误后,点击Finish就可以建立一个完整的工程了。
2.设计输入和代码仿真
(1)在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令,选择
Verilog Module输入,并输入Verilog文件名。
(2)单击Next按钮进入端口定义对话框。其中Module Name栏用于输入模块名,这里是comp2bit,下面的列表框用于端口的定义。Port Name表示端口名称,Direction表示端口方向(可选择为input、output或inout),MSB表示信号最高位,LSB表示信号最低位,对于单信号的MSB和LSB不用填写。当然,端口定义这一步我们也可以略过,在源程序中再行添加。
(3)定义了模块的端口后,单击Next进入下一步,点击Finish完成创建。这样,ISE就会自动创建一个Verilog模块的模板,并且在源代码编辑区打开。简单的注释、模块和端口定义已经自动生成,接下来的工作就是将代码编写完整。
(4)输入代码后,我们还需要对模块进行测试。在工程管理区将view设置为Simulation,在任意位置单击鼠标右键,并在弹出的菜单中选择New Source,在类型中选择Verilog Test Fixture,输入测试文件名,单击下一步。这时所有工程中的模块名都会显示出来,我们选择要进行测试的模块。点击Next ,再单击Finish按钮,ISE会在源代码编辑区自动生成测试模块的代码。我们看到,ISE已经自动生成了基本的信号并对被测模块做了例化。我们的工作就是在initial…end块中的“//Add stimulus here”后面添加测试向量。
(5)完成测试文件编辑后,确认工程管理区中view选项设置为Simulation,这时在过程管理区会显示与仿真有关的进程。右键单击其中的Simulate Behavioral Model项,选择弹出菜单中的Process Properties项,会弹出属性设置对话框,其中Simulation Run Time就是仿真时间的设置,可将其修改为任意时长。
(6)仿真参数设置完后,就可以进行仿真。首先在工程管理区选中测试代码,然后在过程管理区双击Simulate Behavioral Model,ISE将启动ISE Simulator,可以得到仿真结果。
3.综合与实现
(1)在工程管理区的view中选择Implementation,然后在过程管理区双击Synthesize-XST,就可以开始综合过程。
(2)另外,要实现设计,还需要为模块中的输入输出信号添加管脚约束,这就需要在工程中添加UCF文件。在工程管理区单击鼠标右键,点击New Source,选择Implementation- Constraints File,出现一个空白的约束文件,我们就可以为设计添加各种约束。如果综合步骤没有语法错误,XST能够给出初步的资源消耗情况,点击Design Summary,即可查看。 (3)在过程管理区双击Implementation Design选项,就可以自动完成实现步骤。如果设计没有经过综合,就会启动XST完成综合,在综合后完成实现过程。经过实现后能够得到精确的资源占用情况。在Design Summary即可看到具体的资源占用情况。
4. 二位比较器的verilog源代码
module comp2bit ( input wire [1:0] a, input wire [1:0] b, output wire a_eq_b, output wire a_gt_b, output wire a_lt_b
);
assign a_eq_b = ~b[1] & ~b[0] & ~a[1] & ~a[0]
| ~b[1] & b[0] & ~a[1] & a[0]
| b[1] & ~b[0] & a[1] & ~a[0] | b[1] & b[0] & a[1] & a[0];
assign a_gt_b = ~b[1] & a[1] | ~b[1] & ~b[0] & a[0] | ~b[0] & a[1] & a[0];
assign a_lt_b = b[1] & ~a[1] | b[1] & b[0] & ~a[0] | b[0] & ~a[1] & ~a[0];
endmodule
五.实验结果 :
通过对二位比较器的设计与实现仿真模拟出的结果,如图所示:
实验一:输入逻辑门的设计与实现
一.实验简介:
这个实验将指导你通过使用ISE软件进行简单的2输入逻辑门的设计与实现。
二.实验目的:
?使用ISE软件设计并仿真。 ?学会程序下载。
三.实验内容 :
1. ISE软件是一个支持数字系统设计的开发平台
2. 用ISE软件进行设计开发时基于相应器件型号的。
注意:软件设计时选择 的器件型号是与实际下载板上的器件型号相同。 3. 图1-1所示电路包含6个不同的逻辑门,本实验中用Verilog语句来描述。
四. 实验步骤 :