第二步:打开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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)