EDA实验报告

时间:2024.3.31

实验三: 二位比较器的设计与实现

一.实验简介:

这个实验将指导你通过使用ISE软件进行简单的二位比较器的设计与实现。

二.实验目的:

?       使用ISE软件设计并仿真。

?       学会程序下载。

三.实验原理 :

1.  ISE软件是一个支持数字系统设计的开发

2.用ISE软件进行设计开发时基于相应器件型号的。

注意:软件设计时选择 的器件型号是与实际下载板上的器件型号相同。

3.图2-1所示为二位比较器的真值表,本实验中用Verilog语句来描述。

四.实验步骤 :

 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

五.实验结果 :

通过对二位比较器的设计与实现仿真模拟出的结果,如图所示:   

comp2bit

实验一:输入逻辑门的设计与实现

一.实验简介:

这个实验将指导你通过使用ISE软件进行简单的2输入逻辑门的设计与实现。

二.实验目的:

?使用ISE软件设计并仿真。

?学会程序下载。

三.实验内容 :

1. ISE软件是一个支持数字系统设计的开发平台

2. 用ISE软件进行设计开发时基于相应器件型号的。

注意:软件设计时选择 的器件型号是与实际下载板上的器件型号相同。

3. 图1-1所示电路包含6个不同的逻辑门,本实验中用Verilog语句来描述。

四. 实验步骤 :

   

1.   新建工程

(1)双击桌面上“Xilinx ISE 12.3”图标,启动ISE软件(也可从开始菜单启动)。每次打开ISE都会默认恢复到最近使用过的工程界面。当第一次使用时,由于还没有历史工程记录,所以工程管理区显示空白。选择File ——>New Project选项,在弹出的对话框中输入工程名称并指定工程路径,如图所示。

1 

(2)点击Next按钮进入下一页,选择所使用的芯片及综合、仿真工具。计算机上安装的所有用于仿真和综合的第三方EDA工具都可以在下拉菜单中找到,如图所示。在图中我们选用了Spartan6 XC6SLX16芯片,采用CSG324封装,这是NEXYS3开发板所用的芯片。另外,我们选择Verilog作为默认的硬件描述语言。

(3)再点击Next按钮进入下一页,这里显示了新建工程的信息,确认无误后,点击Finish就可以建立一个完整的工程了,如图所示。

器件选型 

2设计输入和代码仿真          

(1)在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令,会弹出如图1-5所示的新建源代码对话框,对于逻辑设计,最常用的输入方式就是HDL代码输入法(Verilog Module、VHDL Module)、状态机输入法(State Diagram )和原理图输入法(Schematic)。这里我们选择Verilog Module输入,并输入Verilog文件名。

新建文件

(2)单击Next按钮进入端口定义对话框,如图1-6所示。其中Module Name栏用于输入模块名,这里是gates2,下面的列表框用于端口的定义。Port Name表示端口名称,Direction表示端口方向(可选择为input、output或inout),MSB表示信号最高位,LSB表示信号最低位,对于单信号的MSB和LSB不用填写。当然,端口定义这一步我们也可以略过,在源程序中再行添加。

端口定义

(3)定义了模块的端口后,单击Next进入下一步,点击Finish完成创建。这样,ISE就会自动创建一个Verilog模块的模板,并且在源代码编辑区打开。简单的注释、模块和端口定义已经自动生成,接下来的工作就是将代码编写完整,如图1-7所示。

文本

 (4)输入代码后,我们还需要对模块进行测试。在工程管理区将view设置为Simulation,在任意位置单击鼠标右键,并在弹出的菜单中选择New Source,在类型中选择Verilog Test Fixture,输入测试文件名,单击下一步。这时所有工程中的模块名都会显示出来,我们选择要进行测试的模块,如gates2模块。点击Next ,再单击Finish按钮,ISE会在源代码编辑区自动生成测试模块的代码,如图1-8所示。我们看到,ISE已经自动生成了基本的信号并对被测模块做了例化。我们的工作就是在initial…end块中的“//Add stimulus here”后面添加测试向量。

测试代码 

对gates2模块,我们可以添加如下所示的测试代码。

        

         #200

                      a <= 0;

                      b <= 0;

           #200

                      a <= 0;

                      b <= 1;

           #200

                      a <= 1;

                       b <= 0;

           #200

                      a <= 1;

                      b <= 1;

(5)完成测试文件编辑后,确认工程管理区中view选项设置为Simulation,这时在过程管理区会显示与仿真有关的进程,如图1-9中Processes栏所示。右键单击其中的Simulate Behavioral Model项,选择弹出菜单中的Process Properties项,会弹出如图所示的属性设置对话框,其中Simulation Run Time就是仿真时间的设置,可将其修改为任意时长。

测试进程

(6)仿真参数设置完后,就可以进行仿真。首先在工程管理区选中测试代码,然后在过程管理区双击Simulate Behavioral Model,ISE将启动ISE Simulator,可以得到仿真结果。

3.综合与实现

(1)所谓综合,就是将HDL语言、原理图等设计输入翻译成由与、或、非门和RAM、触发器等基本逻辑单元的逻辑连接(网表),并根据目标和要求(约束条件)优化所生成的逻辑连接。完成了输入和仿真后就可以进行综合。在工程管理区的view中选择Implementation,然后在过程管理区双击Synthesize-XST,就可以开始综合过程,如图所示

综合

(2)另外,要实现设计,还需要为模块中的输入输出信号添加管脚约束,这就需要在工程中添加UCF文件。在工程管理区单击鼠标右键,点击New Source,选择Implementation- Constraints File,出现一个空白的约束文件,我们就可以为设计添加各种约束。综合可能有3种结果:如果综合后完全正确,则在Synthesize-XST前面有一个打勾的小圆圈;如果有警告,则出现一个带感叹号的黄色小圆圈;如果有错误,则出现一个带叉的红色小圆圈。如果综合步骤没有语法错误,XST能够给出初步的资源消耗情况,点击Design Summary,即可得到结果。

(3)综合完成后,下一个步骤就是实现(Implementation)。所谓实现,是指将综合输出的逻辑网表翻译成所选器件的底层模块和硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的。实现主要分为3个步骤:翻译(Translate)逻辑网表、映射(Map)到器件单元与布局布线(place & Route)。在ISE中,执行实现过程,会自动执行翻译、映射和布局布线过程:也可单独执行。在过程管理区双击Implementation Design选项,就可以自动完成实现的3个步骤,如图1-14所示。如果设计没有经过综合,就会启动XST完成综合,在综合后完成实现过程。经过实现后能够得到精确的资源占用情况。在Design Summary即可看到具体的资源占用情况。

4. 输入逻辑门的verilog源代码

module gates2(

input wire a,

input wire b,

  output wire[5:0]z

);

assign z[5] = a&b;

  assign z[4] = ~(a&b);

assign z[3] = a|b;

  assign z[2] = ~(a|b);

assign z[1] = a^b;

 assign z[0] = a~^b;

endmodule

五.实验结果 :

通过对输入逻辑门的设计与实现仿真模拟出的结果,如图所示:   

仿真结果

实验四:4位二进制-BCD码转换器的设计与实现

一、实验简介

  这个实验将指导你通过使用ISE软件进行4位二进制-BCD码转换器的设计与实现。

二、实验目的

使用ISE软件设计并仿真。

学会程序下载。

三、实验内容

    1.ISE软件是一个支持数字系统设计的开发平台

  2.用ISE软件进行设计开发时基于相应器件型号的。

     注意:软件设计时选择 的器件型号是与实际下载板上的器件型号相同。

3.图8-1所示为4位二进制-BCD码转换器的真值表,本实验中用Verilog语句来描述。

四、实验步骤

1.新建工程

   双击桌面上“Xilinx ISE 12.3”图标,启动ISE软件(也可从开始菜单启动)。每次打开ISE都会默认恢复到最近使用过的工程界面。当第一次使用时,由于还没有历史工程记录,所以工程管理区显示空白。选择File New Project选项,在弹出的对话框中输入工程名称并指定工程路径。

    点击Next按钮进入下一页,选择所使用的芯片及综合、仿真工具。计算机上安装的所有用于仿真和综合的第三方EDA工具都可以在下拉菜单中找到。在图中我们选用了Spartan6  XC6SLX16芯片,采用CSG324封装,这是NEXYS3开发板所用的芯片。另外,我们选择Verilog作为默认的硬件描述语言。

  再点击Next按钮进入下一页,这里显示了新建工程的信息,确认无误后,点击Finish就可以建立一个完整的工程了。

 2. 设计输入和代码仿真             

 

 在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令,选择Verilog Module输入,并输入Verilog文件名。

   单击Next按钮进入端口定义对话框。其中Module Name栏用于输入模块名,这里是binbcd4,下面的列表框用于端口的定义。Port Name表示端口名称,Direction表示端口方向(可选择为input、output或inout),MSB表示信号最高位,LSB表示信号最低位,对于单信号的MSB和LSB不用填写。当然,端口定义这一步我们也可以略过,在源程序中再行添加。

  定义了模块的端口后,单击Next进入下一步,点击Finish完成创建。这样,ISE就会自动创建一个Verilog模块的模板,并且在源代码编辑区打开。简单的注释、模块和端口定义已经自动生成,接下来的工作就是将代码编写完整。

    输入代码后,我们还需要对模块进行测试。在工程管理区将view设置为Simulation,在任意位置单击鼠标右键,并在弹出的菜单中选择New Source,在类型中选择Verilog Test  Fixture,输入测试文件名,单击下一步。这时所有工程中的模块名都会显示出来,我们选择要进行测试的模块。点击Next ,再单击Finish按钮,ISE会在源代码编辑区自动生成测试模块的代码。我们看到,ISE已经自动生成了基本的信号并对被测模块做了例化。我们的工作就是在initial…end块中的“//Add stimulus here”后面添加测试向量。

   完成测试文件编辑后,确认工程管理区中view选项设置为Simulation,这时在过程管理区会显示与仿真有关的进程。右键单击其中的Simulate Behavioral Model项,选择弹出菜单中的Process Properties项,会弹出属性设置对话框,其中Simulation Run Time就是仿真时间的设置,可将其修改为任意时长。

       仿真参数设置完后,就可以进行仿真。首先在工程管理区选中测试代码,然后在过程管理区双击Simulate Behavioral Model,ISE将启动ISE Simulator,可以得到仿真结果。

3. 综合与实现          

  在工程管理区的view中选择Implementation,然后在过程管理区双击Synthesize-XST,就可以开始综合过程。

    另外,要实现设计,还需要为模块中的输入输出信号添加管脚约束,这就需要在工程中添加UCF文件。在工程管理区单击鼠标右键,点击New Source,选择Implementation- Constraints File,出现一个空白的约束文件,我们就可以为设计添加各种约束。如果综合步骤没有语法错误,XST能够给出初步的资源消耗情况,点击Design Summary,即可查看。    在过程管理区双击Implementation Design选项,就可以自动完成实现步骤。如果设计没有经过综合,就会启动XST完成综合,在综合后完成实现过程。经过实现后能够得到精确的资源占用情况。在Design Summary即可看到具体的资源占用情况。

4.器件配置          

   硬件配置是FPGA开发最关键的一步,只有将HDL代码下载到FPGA芯片中,才能进行调试并最终实现相应的功能。首先我们必须生成能下载到硬件中的二进制比特文件。双击过程管理区的Generate  Programming  File,ISE就会为设计生成相应的二进制比特文件。

    然后利用USB-MiniUSB缆线,来为开发板提供电源和数据下载。我们只需上网下载免费的Digilent Adept软件,即可快速实现Nexys3开发板上FPGA的配置。用USB-MiniUSB缆线连接开发板和PC,打开开发板的电源开关,然后启动Digilent Adept软件。系统开始自动连接FPGA设备,成功检测到设备后,会显示出JTAG链上所用芯片。

界面上将显示检测到NEXYS3开发板上的器件FPGA(XC6SLX16)。这里我们对FPGA进行配置。在Browse中找到之前生成的设计的二进制比特文件,并点击旁边的Program按钮,软件就开始对FPGA进行配置。配置成功后,下面的状态栏会显示Programming Successful。至此,器件配置成功,我们就可以在器件上验证预期的设计有没有很好的得以实现。

1. 4位二进制-BCD码转换器的verilog源代码

                                     module binbcd4 (

input wire [3:0] b,

output wire [4:0] p

);

                     assign p[4] = b[3] & b[2] | b[3] & b[1];

assign p[3] = b[3] & ~b[2] & ~b[1];

assign p[2] = ~b[3] & b[2] | b[2] & b[1];

assign p[1] = b[3] & b[2] & ~b[1] | ~b[3] & b[1];

assign p[0] = b[0];

endmodule

2.4位二进制-BCD码转换器的约束文件

                                      NET "b[3]" LOC ="T5";

NET "b[2]" LOC ="V8";

NET "b[1]" LOC ="U8";

NET "b[0]" LOC ="N8";

NET "p[4]" LOC ="T11";

NET "p[3]" LOC ="R11";

NET "p[2]" LOC ="N11";

NET "p[1]" LOC ="M11";

NET "p[0]" LOC ="V15";

五、实验结果

实验五:8-3优先编码器的设计与实现

一、实验简介

这个实验将指导你通过使用ISE软件进行8-3优先编码器的设计与实现。

二、实验目的

使用ISE软件设计并仿真。

学会程序下载。

三、实验内容

1.ISE软件是一个支持数字系统设计的开发平台

2.用ISE软件进行设计开发时基于相应器件型号的。

   注意:软件设计时选择 的器件型号是与实际下载板上的器件型号相同。

3.图7-1所示为8-3优先编码器的真值表,本实验中用Verilog语句来描述。

 

四、实验步骤

1.新建工程          

   双击桌面上“Xilinx ISE 12.3”图标,启动ISE软件(也可从开始菜单启动)。每次打开ISE都会默认恢复到最近使用过的工程界面。当第一次使用时,由于还没有历史工程记录,所以工程管理区显示空白。选择File New Project选项,在弹出的对话框中输入工程名称并指定工程路径。

    点击Next按钮进入下一页,选择所使用的芯片及综合、仿真工具。计算机上安装的所有用于仿真和综合的第三方EDA工具都可以在下拉菜单中找到。在图中我们选用了Spartan6  XC6SLX16芯片,采用CSG324封装,这是NEXYS3开发板所用的芯片。另外,我们选择Verilog作为默认的硬件描述语言。

  再点击Next按钮进入下一页,这里显示了新建工程的信息,确认无误后,点击Finish就可以建立一个完整的工程了。

2.设计输入和代码仿真             

  在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令,选择Verilog Module输入,并输入Verilog文件名。

   单击Next按钮进入端口定义对话框。其中Module Name栏用于输入模块名,这里是pencode83,下面的列表框用于端口的定义。Port Name表示端口名称,Direction表示端口方向(可选择为input、output或inout),MSB表示信号最高位,LSB表示信号最低位,对于单信号的MSB和LSB不用填写。当然,端口定义这一步我们也可以略过,在源程序中再行添加。

  定义了模块的端口后,单击Next进入下一步,点击Finish完成创建。这样,ISE就会自动创建一个Verilog模块的模板,并且在源代码编辑区打开。简单的注释、模块和端口定义已经自动生成,接下来的工作就是将代码编写完整。

    输入代码后,我们还需要对模块进行测试。在工程管理区将view设置为Simulation,在任意位置单击鼠标右键,并在弹出的菜单中选择New Source,在类型中选择Verilog Test  Fixture,输入测试文件名,单击下一步。这时所有工程中的模块名都会显示出来,我们选择要进行测试的模块。点击Next ,再单击Finish按钮,ISE会在源代码编辑区自动生成测试模块的代码。我们看到,ISE已经自动生成了基本的信号并对被测模块做了例化。我们的工作就是在initial…end块中的“//Add stimulus here”后面添加测试向量。

   完成测试文件编辑后,确认工程管理区中view选项设置为Simulation,这时在过程管理区会显示与仿真有关的进程。右键单击其中的Simulate Behavioral Model项,选择弹出菜单中的Process Properties项,会弹出属性设置对话框,其中Simulation Run Time就是仿真时间的设置,可将其修改为任意时长。

仿真参数设置完后,就可以进行仿真。首先在工程管理区选中测试代码,然后在过程管理区双击Simulate Behavioral Model,ISE将启动ISE Simulator,可以得到仿真结果。

 3.综合与实现          

   在工程管理区的view中选择Implementation,然后在过程管理区双击Synthesize-XST,就可以开始综合过程。

    另外,要实现设计,还需要为模块中的输入输出信号添加管脚约束,这就需要在工程中添加UCF文件。在工程管理区单击鼠标右键,点击New Source,选择Implementation- Constraints File,出现一个空白的约束文件,我们就可以为设计添加各种约束。如果综合步骤没有语法错误,XST能够给出初步的资源消耗情况,点击Design Summary,即可查看。    在过程管理区双击Implementation Design选项,就可以自动完成实现步骤。如果设计没有经过综合,就会启动XST完成综合,在综合后完成实现过程。经过实现后能够得到精确的资源占用情况。在Design Summary即可看到具体的资源占用情况。

4.器件配置          

   硬件配置是FPGA开发最关键的一步,只有将HDL代码下载到FPGA芯片中,才能进行调试并最终实现相应的功能。首先我们必须生成能下载到硬件中的二进制比特文件。双击过程管理区的Generate  Programming  File,ISE就会为设计生成相应的二进制比特文件。

    然后利用USB-MiniUSB缆线,来为开发板提供电源和数据下载。我们只需上网下载免费的Digilent Adept软件,即可快速实现Nexys3开发板上FPGA的配置。用USB-MiniUSB缆线连接开发板和PC,打开开发板的电源开关,然后启动Digilent Adept软件。系统开始自动连接FPGA设备,成功检测到设备后,会显示出JTAG链上所用芯片。

界面上将显示检测到NEXYS3开发板上的器件FPGA(XC6SLX16)。这里我们对FPGA进行配置。在Browse中找到之前生成的设计的二进制比特文件,并点击旁边的Program按钮,软件就开始对FPGA进行配置。配置成功后,下面的状态栏会显示Programming Successful。至此,器件配置成功,我们就可以在器件上验证预期的设计有没有很好的得以实现。

1. 8-3优先编码器的verilog源代码

                           module pencode83 (

                             input wire [7:0] x,

                             output reg [2:0] y,

                             output reg valid

                                        );

                              integer i;

                               always @ ( * )

                               begin

                                    y = 0;

                                    valid = 0;

                               for (i = 0; i <= 7; i = i+1)

                               if (x[i] ==1)

                                begin

                                    y = i;

                                    valid = 1;

                                end

                               End

                              Endmodule

2.8-3优先编码器的约束文件

                 NET "x[0]"  LOC = "T5";

                 NET "x[1]"  LOC = "V8";

                 NET "x[2]"  LOC = "U8";

                 NET "x[3]"  LOC = "N8";

                 NET "x[4]"  LOC = "M8";

                 NET "x[5]"  LOC = "V9";

                 NET "x[6]"  LOC = "T9";

                 NET "x[7]"  LOC = "T10";

                 NET "y[0]"  LOC = "T11";

                 NET "y[1]"  LOC = "R11";

                 NET "y[2]"  LOC = "N11";

                 NET "valid"  LOC = "M11";

五、实验结果

实验六:4位移位器的设计与实现

一、实验简介

 这个实验将指导你通过使用ISE软件进行4位移位器的设计与实现

二、实验目的

使用ISE软件设计并仿真。

学会程序下载。

三、实验内容

1.ISE软件是一个支持数字系统设计的开发平台

2.用ISE软件进行设计开发时基于相应器件型号的。

     注意:软件设计时选择 的器件型号是与实际下载板上的器件型号相同。

3.图10-1所示为4位移位器框图和功能表,本实验中用Verilog语句来描述。

四、实验步骤

1.新建工程           

   双击桌面上“Xilinx ISE 12.3”图标,启动ISE软件(也可从开始菜单启动)。每次打开ISE都会默认恢复到最近使用过的工程界面。当第一次使用时,由于还没有历史工程记录,所以工程管理区显示空白。选择File New Project选项,在弹出的对话框中输入工程名称并指定工程路径。

    点击Next按钮进入下一页,选择所使用的芯片及综合、仿真工具。计算机上安装的所有用于仿真和综合的第三方EDA工具都可以在下拉菜单中找到。在图中我们选用了Spartan6  XC6SLX16芯片,采用CSG324封装,这是NEXYS3开发板所用的芯片。另外,我们选择Verilog作为默认的硬件描述语言。

  再点击Next按钮进入下一页,这里显示了新建工程的信息,确认无误后,点击Finish就可以建立一个完整的工程了。

 2.设计输入和代码仿真           

  在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令,选择Verilog Module输入,并输入Verilog文件名。

   单击Next按钮进入端口定义对话框。其中Module Name栏用于输入模块名,这里是shift4,下面的列表框用于端口的定义。Port Name表示端口名称,Direction表示端口方向(可选择为input、output或inout),MSB表示信号最高位,LSB表示信号最低位,对于单信号的MSB和LSB不用填写。当然,端口定义这一步我们也可以略过,在源程序中再行添加。

  定义了模块的端口后,单击Next进入下一步,点击Finish完成创建。这样,ISE就会自动创建一个Verilog模块的模板,并且在源代码编辑区打开。简单的注释、模块和端口定义已经自动生成,接下来的工作就是将代码编写完整。

   输入代码后,我们还需要对模块进行测试。在工程管理区将view设置为Simulation,在任意位置单击鼠标右键,并在弹出的菜单中选择New Source,在类型中选择Verilog Test  Fixture,输入测试文件名,单击下一步。这时所有工程中的模块名都会显示出来,我们选择要进行测试的模块。点击Next ,再单击Finish按钮,ISE会在源代码编辑区自动生成测试模块的代码。我们看到,ISE已经自动生成了基本的信号并对被测模块做了例化。我们的工作就是在initial…end块中的“//Add stimulus here”后面添加测试向量。

  完成测试文件编辑后,确认工程管理区中view选项设置为Simulation,这时在过程管理区会显示与仿真有关的进程。右键单击其中的Simulate Behavioral Model项,选择弹出菜单中的Process Properties项,会弹出属性设置对话框,其中Simulation Run Time就是仿真时间的设置,可将其修改为任意时长。

    仿真参数设置完后,就可以进行仿真。首先在工程管理区选中测试代码,然后在过程管理区双击Simulate Behavioral Model,ISE将启动ISE Simulator,可以得到仿真结果。

 3 .综合与实现          

   在工程管理区的view中选择Implementation,然后在过程管理区双击Synthesize-XST,就可以开始综合过程。

另外,要实现设计,还需要为模块中的输入输出信号添加管脚约束,这就需要在工程中添加UCF文件。在工程管理区单击鼠标右键,点击New Source,选择Implementation- Constraints File,出现一个空白的约束文件,我们就可以为设计添加各种约束。如果综合步骤没有语法错误,XST能够给出初步的资源消耗情况,点击Design Summary,即可查看。     在过程管理区双击Implementation Design选项,就可以自动完成实现步骤。如果设计没有经过综合,就会启动XST完成综合,在综合后完成实现过程。经过实现后能够得到精确的资源占用情况。在Design Summary即可看到具体的资源占用情况。

4.器件配置            

    硬件配置是FPGA开发最关键的一步,只有将HDL代码下载到FPGA芯片中,才能进行调试并最终实现相应的功能。首先我们必须生成能下载到硬件中的二进制比特文件。双击过程管理区的Generate  Programming  File,ISE就会为设计生成相应的二进制比特文件。

    然后利用USB-MiniUSB缆线,来为开发板提供电源和数据下载。我们只需上网下载免费的Digilent Adept软件,即可快速实现Nexys3开发板上FPGA的配置。用USB-MiniUSB缆线连接开发板和PC,打开开发板的电源开关,然后启动Digilent Adept软件。系统开始自动连接FPGA设备,成功检测到设备后,会显示出JTAG链上所用芯片。

界面上将显示检测到NEXYS3开发板上的器件FPGA(XC6SLX16)。这里我们对FPGA进行配置。在Browse中找到之前生成的设计的二进制比特文件,并点击旁边的Program按钮,软件就开始对FPGA进行配置。配置成功后,下面的状态栏会显示Programming Successful。至此,器件配置成功,我们就可以在器件上验证预期的设计有没有很好的得以实现。

1.4位移位器的verilog源代码

                                 module shift4(

                                 input wire [3:0] d,

                                 input wire [2:0] s,

                                 output reg [3:0] y

                                 );

                                 always@(*)

                                 case(s)

                                 0: y = d;               // noshift

                                 1: y= {1'b0,d[3:1]};      // shr

                                 2: y= {d[2:0],1'b0};      // shl

                                 3: y= {d[0],d[3:1]};       // ror

                                 4: y= {d[2:0],d[3]};      // rol

                                 5: y= {d[3],d[3:1]};      // asr

                                 6: y= {d[1:0],d[3:2]};     // ror2

                                 7: y= d;                // noshift

                                 default: y = d;

                                 endcase

                                 Endmodule

 2.4位移位器的约束文件

                                  NET "d[3]" LOC ="T5";

                                  NET "d[2]" LOC ="V8";

                                  NET "d[1]" LOC ="U8";

                                  NET "d[0]" LOC ="N8";

                                  NET "s[2]" LOC ="M8";

                                  NET "s[1]" LOC ="V9";

                                  NET "s[0]" LOC ="T9";

                                  NET "y[3]" LOC ="T11";

                                  NET "y[2]" LOC ="R11";

                                  NET "y[1]" LOC ="N11";

                                  NET "y[0]" LOC ="M11";

五、实验结果

实验三: 421多路选择器的设计与实现

一.实验简介:

这个实验将指导你通过使用ISE软件进行4位2选1多路选择器的设计与实现。

二.实验目的:

?         使用ISE软件设计并仿真。

?         学会程序下载。

三.实验原理 :

1.      ISE软件是一个支持数字系统设计的开发平台

2.      用ISE软件进行设计开发时基于相应器件型号的。

注意:软件设计时选择 的器件型号是与实际下载板上的器件型号相同。

3.      图3-1所示为4位2选1多路选择器原理图,本实验中用Verilog语句来描述。

图3-1

四.实验步骤 :

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栏用于输入模块名,这里是mux24a,下面的列表框用于端口的定义。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.器件配置          

   (1) 硬件配置是FPGA开发最关键的一步,只有将HDL代码下载到FPGA芯片中,才能进行调试并最终实现相应的功能。首先我们必须生成能下载到硬件中的二进制比特文件。双击过程管理区的Generate  Programming  File,ISE就会为设计生成相应的二进制比特文件。

   (2) 然后利用USB-MiniUSB缆线,来为开发板提供电源和数据下载。我们只需上网下载免费的Digilent Adept软件,即可快速实现Nexys3开发板上FPGA的配置。用USB-MiniUSB缆线连接开发板和PC,打开开发板的电源开关,然后启动Digilent Adept软件。系统开始自动连接FPGA设备,成功检测到设备后,会显示出JTAG链上所用芯片。

  (3)界面上将显示检测到NEXYS3开发板上的器件FPGA(XC6SLX16)。这里我们对FPGA进行配置。在Browse中找到之前生成的设计的二进制比特文件,并点击旁边的Program按钮,软件就开始对FPGA进行配置。配置成功后,下面的状态栏会显示Programming Successful。              (4)至此,器件配置成功,我们就可以在器件上验证预期的设计有没有很好的得以实现。

 4位2选1多路选择器的verilog源代码

   module mux24a(

input wire [3:0] a,

input wire [3:0] b,

input wire s,

output wire [3:0] y

);

assign y = {4{~s}} & a | {4{s}} & b;

endmodule     

五、实验结果

                 

                      

更多相关推荐:
3d实验报告

实验报告实验报告院系信息科学与技术学院课程名称三维动画设计日期实验报告九江学院实验报告实验报告实验报告实验报告实验报告实验报告院系信息科学与技术学院课程名称三维动画设计日期九江学院3D王燕信A1131实验报告

3D实验报告

景德镇陶瓷学院设计艺术学院实验报告课程名称计算机辅助设计三维设计姓名戈瑞琪教师董翠专业班级08陶设4班成绩日期实验项目名称1基础工具2建模3材质4灯光摄影机5渲染实验学时1基础工具8学时2建模32学时3材质16...

3d实习报告

前言所谓三维设计就是利用电脑进行设计与创作以产生真实的立体场景与动画虽然在这个学期对3DSMAX的接触才知道3DSMAX是一个广泛应用于游戏开发后期制造影视特效及专业视觉设计领域的一款功能强大的三维设计软件它是...

unity 3d实验报告

江南大学Unity3D实验报告实验题目班级姓名学号日期一目的与要求1理解使用Unity3D制作游戏的基本过程和方法2理解Unity3D软件的操作界面3掌握地形的创建和简单编辑方法4掌握游戏场景中光源的添加和设置...

3D打印实验报告

姓名:学号:指导教师:20xx年x月x日一、技术介绍3D打印是一种通过材料逐层添加制造三维物体的变革性、数字化增材制造技术,它将信息、材料、生物、控制等技术融合渗透,将对未来制造业生产模式与人类生活方式产生…

3D MAX过程训练实验报告

3D MAX过程训练实验报告,内容附图。

3d实验报告建筑材质 灯光

本科学生综合性实验报告项目组长郭恺学号0094326成员郭恺专业09环艺2班实验项目名称建筑材质灯光设计指导教师及职称陈茜讲师开课学期20xx至20xx学年二学期上课时间20xx年3月30日学生实验报告一实验综...

3ds max实验报告一

3ds max实验报告一,内容附图。

AE提高性实验报告

提高型实验报告实验课题KobeBryant设计型应用型实验类型综合型实验课程非线性编辑专业名称教育技术学实验班级教育技术学1101实验者周洁实验时间20xx12教育科学与技术学院一实验目的1熟悉3D层的操作2掌...

unity实验报告

安徽科技学院unity课程实习报告所在专业地理信息系统组长姓名杨明明220xx10124组内成员刘德旺220xx10114所在院系指导教师日期一实验目的及要求本次实验的总的目的是通过具体的程序的编写与unity...

实验报告 -3D打印机

人机交互技术实验报告实验名称3D打印机原理及构造班级数媒1301组长学号姓名刘家旺组员学号姓名沈苏明成绩实验四3D打印机原理及构造一实验目的了解学院使用的3D打印机的工作原理二实验要求了解学院使用的3D打印机的...

3D打印实验课实验报告及说明

关于先进制造技术课程3D打印实验的通知一实验须知1实验时间安排第12周周一11月23日下午200330全体同学统一进行3D打印实验原理和操作方法及注意事项的讲解理论讲解地点为上课地点讲解后分2批进行实验具体分批...

3d实验报告(35篇)