Verilog HDL语言设计实验指导书(2004)(3)
begin end
j <= 0;
F500K <= ~F500K;
else
j <= j+1;
endmodule
end
测试模块源代码:
//--------------- fdivision_Top.v ------------------------ `timescale 1ns/100ps `define clk_cycle 50 module division_Top;
reg F10M_clk,RESET; wire F500K_clk; always
#`clk_cycle F10M_clk = ~ F10M_clk; initial
begin
RESET=1; F10M=0; #100 RESET=0; #100 RESET=1; #10000 $stop;
end
fdivision fdivision (.RESET(RESET),.F10M(F10M_clk),.F500K(F500K_clk)); endmodule 仿真波形:
2.设计时序逻辑时采用阻塞赋值与非阻塞赋值的区别
非阻塞赋值语句(<=)右端表达式计算完后并不立即赋值给左端,而是同时启动下一条语句继续执行,而阻塞赋值语句(=)在每个右端表达式计算完成后立即赋值给左端变量。非阻塞赋值不能用于
9
assign语句中,而只能用于对寄存器型变量进行赋值,只能在intial和always等过程过程块中。阻塞赋值既能用于assign语句,也能用于intial和always等过程赋值中。对于时序逻辑的描述和建模,应尽量使用非阻塞赋值方式。若在同一个always过程块中描述时序和组合逻辑混合电路时也最好使用非阻塞赋值方式。
在always块中,阻塞赋值可以理解为赋值语句是顺序执行的,而非阻塞赋值可以理解为赋值语句是并发执行的。实际的时序逻辑设计中,一般的情况下非阻塞赋值语句被更多地使用,有时为了在同一周期实现相互关联的操作,也使用了阻塞赋值语句。
可综合设计中阻塞赋值和非阻塞赋值设计要点:
1)非阻塞赋值不能用于assign持续赋值中,一般只出现在initial和always等过程块中,对reg型变量进行赋值;
2)当用always块来描述组合逻辑时,既可以用阻塞赋值,也可以用非阻塞赋值。但在同一个过程块中,最好不要同时用阻塞赋值和非阻塞赋值;
3)在向函数funtion的返回值赋值时,应使用阻塞赋值;
4)不能在一个以上的always过程块中对同一个变量赋值,这样会引起冲突,在综合时会报错; 5)在一个模块中,严禁对同一个变量既进行阻塞赋值,又进行非阻塞赋值,这样会在综合时报错;
6)对时序逻辑的描述和建模,应尽量使用非阻塞赋值方式,此外,若在同一个always过程块中描述时序和组合逻辑混合电路时,最好使用非阻塞赋值方式。
阻塞赋值与非阻塞赋值示例:分别采用阻塞赋值语句和非阻塞赋值语句的两个看上去非常相似的两个模块blocking.v和non_blocking.v来阐明两者之间的区别。 模块源代码:
// ------------- blocking.v --------------- module blocking(clk,a,b,c);
output [3:0] b,c; input [3:0] a; input clk; reg [3:0] b,c; always @(posedge clk)
begin b = a; c = b;
$display(\
end
endmodule
//------------- non_blocking.v ------------------- module non_blocking(clk,a,b,c);
10
output [3:0] b,c;
input [3:0] a; input clk; reg [3:0] b,c; always @(posedge clk) end
begin b <= a; c <= b;
$display(\
endmodule 测试模块源代码:
//------------- compareTop.v ----------------------------- `timescale 1ns/100ps `include \`include \module compareTop;
wire [3:0] b1,c1,b2,c2;
reg [3:0] a; reg clk; initial
begin end
clk = 0;
forever #50 clk = ~clk;
initial
begin a = 4'h3;
$display(\# 100 a = 4'h7;
$display(\# 100 a = 4'hf;
$display(\# 100 a = 4'ha;
$display(\# 100 a = 4'h2;
11
end
$display(\# 100 $display(\$stop;
non_blocking non_blocking(clk,a,b2,c2); blocking blocking(clk,a,b1,c1);
endmodule 仿真波形(部分):
三、实验设备及实验注意事项
1.Modelsim6.0和Sypnify Pro7.3及以上版本EDA软件
Modelsim是美国Mentor Graphics公司的子公司Model Technology的产品,属于编译型的Verilog/VHDL混合型仿真器。Mentor Graphics公司是世界最著名的从事电子设计自动化(EDA)系统设计、制造、销售和服务的厂家之一。Modelsim可以在同一个设计中单独或混合使用Verilog和VHDL,允许Verilog模块调用VHDL的实体,或VHDL调用Verilog。由于Modelsim是编译型仿真器,使用编译后的HDL库进行仿真,因此在进行仿真前,必须编译所有的待仿真的HDL文件成为HDL仿真库,在编译时使源文件获得优化,提高了仿真速度。Modelsim 可以完成三个层次的Verilog仿真,分别为RTL级仿真、综合后门级仿真、适配后门级仿真。因为其功能的强大和完善,Modelsim已成为基于PC机Windows平台的最流行的HDL仿真和验证工具。
Synplify Pro/Synplify是由位于美国加州的Synplicity公司推出的专门用于FPGA/CPLD的逻辑综合工具,它支持Verilog HDL和VHDL高层次设计描述,在综合优化方面性能优异,应用广泛。Synplify Pro/Synplify支持Verilog 1364-1995标准,能以很高的效率将Verilog设计文件转换为针对选定器件的标准网表,并提供相应设计环境的配置文件,在综合后还可以生成Verilog仿真网表,以便对原设计进行功能仿真。
需要指出的是,最专业和强大的EDA软件都是基于服务器的UNIX软件,限于已有条件,本课程只能选择PC机Windows平台下最流行的Modelsim 和Synplify Pro这两种分别用于仿真和综合的EDA软件。 …… 此处隐藏:1097字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [基础教育]2016-2022年中国钢芯铝绞线市场现状调
- [基础教育]语文部编版初一语文下册练习题 句式变
- [基础教育]南京继续教育参考答案--深入学习贯彻习
- [基础教育]国旗下讲话稿——珍惜时间好读书
- [基础教育]北师大版六年级数学下册圆锥的体积教学
- [基础教育]人教版-音乐-四年级下册-四年级下册音
- [基础教育]乔布斯2019年斯坦福大学毕业典礼致辞.d
- [基础教育]2015年加油站安全知识竞赛试题及答案
- [基础教育]2020年教师年度考核个人工作总结
- [基础教育]2019年中考历史试题-2019年大庆市初中
- [基础教育]初三仁爱英语第一轮总复习教案
- [基础教育]SG-A094电气配管安装工程隐蔽验收记录
- [基础教育]冀教版小学数学三年级下册第六单元教材
- [基础教育]青岛版(五制)小学科学二年级下册16《制
- [基础教育]2018-2019年初中科学初一中考真卷测试
- [基础教育]幼儿园大班期末简短评语精选
- [基础教育]2018云南临沧公务员考试申论技巧:这样
- [基础教育]学校食堂经营管理方案
- [基础教育]新中国砥砺奋进的七十年原文
- [基础教育]真空泵的选型及常用计算公式
- 高职田径课程教学现状与对策
- 全髋关节置换术在老年股骨颈骨折患者中
- 青人社厅函〔2016〕576号(附件)工资
- cp101-07砂子检验作业指导书 - secret
- 微观经济学 第八章 博弈论 习题
- 2014高考真题(词语运用)汇编及答案
- 2018年人教版七年级语文下册《第三单元
- 苏教版数学四年级上册第一单元试题 - M
- 四川大学新闻与传播考研2000-2010年真
- 浙江万里学院英语专业四年制本科教学计
- 最新2018马年事业祝福语-范文word版(2
- 最全模具行业术语英文翻译
- 皮亚杰的发展心理学理论
- 64篇高考情景式默写 练习题及答案
- 仿写(学生稿)
- 《SQL Server数据库技术》试卷A
- 第七章作业答案
- 江苏省赣榆县海头高级中学高中语文必修
- 浙江省2001年10月自考正常人体解剖学答
- 2012英语重点短语




