ISE综合后仿真如何 *** 作?

ISE综合后仿真如何 *** 作?,第1张

第一步:用modelsim编译xilinx的库,皮态高并添加;

第二步:打开ISE,edit——>preference,在第三方仿真工具里添加你安装modelsim的目录;

第三步:打开你要仿真的ISE工程,在“source”窗口上面有一个下拉菜单,菜单有“behavioral simulation”以及“post synthesis simulation”等,选最后一个

第四步:现在在source窗口,你应该能够看燃尺到你写的测试激励文件;单击选中该闭圆文件,在process的窗口应该能看到modelsim的图标及仿真选项

第五步:双击process窗口的modesim图标,即开始调用modelsim进行仿真!

手头这台电脑没装ISE,凭记忆写了这么多,希望能有帮助;

首先,在ISE14.4中新建一个工程。

2

点击New project...后,会出现create a new project对话框,在标红的方框内起个名字,英文。

3

起好名字后,点击next。然后出现如下对话框,根据芯片手册,将标红的部分,设置正确,点击next.

4

出现如下对话框,不用修改,点击finish。

5

在左上角Hierarchy 方框内,如下图所示。

6

在上图方框内,右击,选择New Source,出现如下对话框。先点击Verilog

Module, 再起个名字,再将add to project 勾选上,按照图片内箭头一步步进行。然后点击next。

出现如下对话框,直接next。

之后,出现如下对话框,也不用修改,直接点击finish。

如下图所示,可以开始编写程序设置PLL了。在标红1处填写端口,2处写描述语言。

如下图所示,红色方框内,为要填写的内容。

保存后,左上角Hierarchy处,变成仔此如如下图所示,扒弊鼠标右击pll_test1.v文件。

右击pll_test1后,点击New source ,出现如下对话框,选择

IP(CORE Generator&Architecture Wizard),起个名字(此处起名需注意要与程序中子模块名字一致,如本程序,为pll_ip),勾选上add to project ,点击next。

然后出现如下对话框,选择Clocking Wizard ,点击next,再点击finish。

出现如下图所示,在标红的部分,修改为所输念启入的时钟(本例为50),别处不用修改,点击next。

然后出现如下对话框,在红框1中选择要输出的端口,红框2中修改要输出的值,然后点击next。

第三页不用修改,直接点击next,第四页与不用修改,直接点击next,第五页也不用修改,直接点击next,第六页也不用修改,点击generate.在下图中标红部分看页数。

OK,到这时就已经完成工作啦,自己添加UCF文件,下载到板子上试试吧。

下面以5进制同步加法计数器的Verilog HDL描述为宏冲例,对比不同的描述方式综合出来的RTL Schematic,看看有什么不同。

行为级描述

首先采用电路的行为级描述方式。

Verilog HDL设计代码为:

module counter5(clk, rst, cnt, co)

input clk

input rst

output co//输出为进位

reg co

output [2:0] cnt

reg[2:0] cnt

always@(posedge clk)

begin

if(rst)

begin

cnt <= 3'b000

co <= 1'b0

end

else if(cnt == 3'b100)

begin

cnt <= 3'b000

co <侍绝岩= 1'b1

end

else

begin

cnt <= cnt + 1'b1

co <= 1'b0

end

end

endmodule

登录后复制

ISE综合

RTL Schematic

展开后

Technology Schematic

状态机描述状态转移图

Verilog HDL代码

`timescale 1ns / 1ps

//

// Company:

// Engineer:

//

// Create Date:22:12:23 08/03/2018

/老御/ Design Name:

// Module Name:counter5

// Project Name:

// Target Devices:

// Tool versions:

// Description:

//

// Dependencies:

//

// Revision:

// Revision 0.01 - File Created

// Additional Comments:

//

//

module counter5(clk,rst, cnt, co)

input clk

input rst

output[2:0] cnt

output co

reg co

reg[2:0] pre_state, next_state

parameter s0 = 3'b000, s1 = 3'b001, s2 = 3'b010, s3 = 3'b011, s4 = 3'b100

always@(posedge clk or posedge rst)

begin

if(rst)

begin

pre_state <= s0

// co <= 1'b0

end

else

begin

pre_state <= next_state

end

end

always@(pre_state)

begin

case(pre_state)

s0:

begin

next_state = s1

co = 1'b0

end

s1:

begin

next_state = s2

co = 1'b0

end

s2:

begin

next_state = s3

co = 1'b0

end

s3:

begin

next_state = s4

co = 1'b0

end

s4:

begin

next_state = s0

co = 1'b1

end

default:

begin

next_state = s0

co = 1'b0

end

endcase

end

assign cnt = pre_state

endmodule

登录后复制

测试文件

`timescale 1ns/1ps

module counter5_tb

reg clk,rst

wire[2:0] cnt

wire co

always

begin

#10 clk = ~clk

end

initial

begin

clk = 1'b0

rst = 1'b1

#20 rst = 1'b0

end

counter5 u1(.clk(clk), .rst(rst), .cnt(cnt), .co(co))

endmodule

登录后复制

仿真波形

ISE综合

RTL Schematic

展开后

Technology Schematic

修正为同步复位

Verilog HDL语言描述

`timescale 1ns / 1ps

//

// Company:

// Engineer:

//

// Create Date:22:12:23 08/03/2018

// Design Name:

// Module Name:counter5

// Project Name:

// Target Devices:

// Tool versions:

// Description:

//

// Dependencies:

//

// Revision:

// Revision 0.01 - File Created

// Additional Comments:

//

//

module counter5(clk,rst, cnt, co)

input clk

input rst

output[2:0] cnt

output co

reg co

reg[2:0] pre_state, next_state

parameter s0 = 3'b000, s1 = 3'b001, s2 = 3'b010, s3 = 3'b011, s4 = 3'b100

always@(posedge clk )

begin

if(rst)

begin

pre_state <= s0

// co <= 1'b0

end

else

begin

pre_state <= next_state

end

end

always@(pre_state)

begin

case(pre_state)

s0:

begin

next_state = s1

co = 1'b0

end

s1:

begin

next_state = s2

co = 1'b0

end

s2:

begin

next_state = s3

co = 1'b0

end

s3:

begin

next_state = s4

co = 1'b0

end

s4:

begin

next_state = s0

co = 1'b1

end

default:

begin

next_state = s0

co = 1'b0

end

endcase

end

assign cnt = pre_state

endmodule

登录后复制

测试代码不变

省略

仿真波形图

ISE综合

RTL Schematic

Technology Schematic

注:用有限状态机这种描述方法中,出现了一系列的错误,这也是一个发现错误并解决的过程,解决问题的代价是很大的(时间的花费,心理的奔溃),但解决问题后的成就感是微妙的,问题见博文:Modelsim下进行功能仿真没问题,可是在ISE综合报错,如何解决?

结构性描述

其实还有一种描述方式,是结构性描述,但这种描述方式实在过于繁琐,例如本例如果采用结构性描述,就不得不画卡诺图,化简卡诺图,等等,真的很让人X疼,这不如让我用原理图来设计电路算了。

这里就不采用这种方式了,但这也不意味着结构性的描述方式一无是处,在有的场合还是需要的;

这三种描述方式有的时候可以混合使用,例如模60计数器的实现就可以采用模10计数器和模6计数器的级联来描述,见博客:

级联模60计数器(Verilog HDL语言描述)(仿真与综合)

这里的级联方式不就是一种结构性的描述吗?

而小的模块的描述则采用的是比价抽象的行为级描述方式。

简单的比较

从RTL Schematic中可以看出,行为级描述方式和有限状态机描述方式综合出来的电路还是有很大不同的:

行为级描述的RTL Schematic


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/12370746.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存