基于QuartusII的同步计数器设计
目录
一、软件及语言概述
二、实验设计
三、学习感悟
四、参考文献
一、软件及语言概述
1.1软件介绍:
Quartus II是Altera公司在21 世纪初推出的FPGA/CPLD开发环境,是Altera前一代FPGA/CPLD集成开发环境MAX+PLUS II的更新换代产品,其优点是功能强大、界面友好、使用便捷。
它支持原理图、VHDL、VerilogHDL以及AHDL 等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
Quartus II支持Altera的IP内核,包含了
LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性,加快了设计速度。
此外,Quartus II通过和DSP Builder工具与Matlab/Simulink的相结合,可以方便的实现各种DSP应用系统;支持Altera 的片上可编程系统开发,集系统设计、嵌入式软件开发。
可编程逻辑设计于一体,是一个综合性的开发平台。
Quartus II有严格的设计流程,分为设计输入与约束、分析和综合、布局布线、仿真及编程与配置等。
本次仿真设计所用到的版本为Quartus II 9.0,其用户界面如下图所示:
1.2 Verilog HDL语言概述:
Verilog HDL即Verilog硬件描述语言,它主要应用于数字电路和系统设计、数字电路和系统仿真等,即利用计算机和相关软件对用Verilog HDL等硬件语言建模的复杂数字逻辑电路设计进行仿真验证,再利用综合软件将设计的数字电路自动综合,以得到符合功能需求并且在相应的硬件电路结构上可以映射实现的数字逻辑网表,然后布局布线,根据网表和选定的实现器件工艺特性自动生成具体电路,同时软件生成选定器件的延时模型,经过仿真验证确定无误后写入器件中,最终实现电路设计。
Verilog HDL语言不仅定义了语法而且对每个语法结构都定义了清晰的模拟、仿真语义。
因此用这种语言编写的模型能够使用Verilog仿真
器进行验证。
语言从C编程语言中继承了多种操作符和结构。
Verilog HDL提供了扩展的建模能力其中许多扩展最初很难理解。
但是Verilog HDL语言的核心子集非常易于学习和使用这对大多数建模应用来说已经足够。
当然完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。
二、实验设计
计数器的逻辑功能是用于记录时钟脉冲的具体个数。
通常计数器最多能记忆时钟的最大数目m称为计数器的模2,即计数器的范围为0到m-1或m-1到0.其基本原理就是将几个触发器按照一定的顺序连接起来,然后根据触发器的组合状态,按照一定的技术规律随着时钟的变化来记忆时钟脉冲的个数。
计数器按照不同的分类方法可分为不同的类型,按照计数器中各个触发器时钟脉冲输入方式的不同分为同步计数器和异步计数器。
其中,同步计数器是指构成计数器的各个触发器的状态只在同一时钟信号的触发下才会发生变化的计数器。
在这里,我主要以同步4位二进制计数器为设计对象。
2.2设计步骤
在菜单栏中,选择File,新建一个工程,在根据工程向导设置相关内容。
所有选项设置好后就可以在文本编辑框中输入相应的程序了。
这里有个重要的点就是,保存时文件名必须和设计时所用的模块名保持一致。
采用文本编辑法,利用Verilog HDL语言来描述同步4位二进制计数器,代码如下:
module tongbu_cnt(co,q,clk,r,s,d,en);
output[3:0] q;
output co;
input clk,r,s,en;
input[3:0] d;
reg[3:0] q;
reg co;
always@(posedge clk)
begin
if(r)
begin q=d;end
else
if(s)
begin q=d;end
else
if(en)
begin q=q+1;
if(q==4'b1111)
begin co=1;end
else
begin co=0;end
end
else
begin q=q;end
end
endmodule
程序编写完成后再进行进行编译,根据编译后的结果提示,修改响应的错误,直到所有错误被修改完成。
编译成功后,如下图所示:
再新建波形仿真文件,弹出对话框如下图所示:
再选择需要添加的输入输出引脚的名字,如下图所示:
然后再对相应的信号进行初始设置,最后点击保存。
接下来就是进行仿真步骤,先进行功能仿真:
再进行时序仿真:
仿真结果:
同步4位二进制计数器的功能仿真结果如图1所示,时序仿真结果如图2所示。
其中,将q设置为buffer类型是为了方便计数。
图1 同步4位二进制计数器的功能仿真结果
图2 同步4位二进制计数器的时序仿真结果
三、学习感悟:
初次接触FPGA时,就感觉它功能很强大。
同时,我也了解到要想学好这门技术也并不容易,需要花大量的时间去专研,其相关的学习开发板也比较昂贵。
另外,对于编程语言来讲,我也是第一次听说Verilog HDL,它的一些编程语句和C语言很像。
在学习这门课程时,我也从中收获了许多。
从第一节课开始,老师推荐的几个学习网站,我觉得对我们技能的提升很有帮助。
除此之外,我觉得像电子发烧友网、电子工程网等,也是不错的学习平台,里面有许多有用的资料和最新的行业动态,这对我们电子信息类的学生来说很有帮助。
在上课过程中,我觉得还是有点更不上节奏,内容不仅多,大部分还是新知识。
基于此,我也到图书馆借阅了相关的书籍,主要是和编程语言相关的。
虽然,现在课程结束了,
但我仍然还是会继续学习下去,作为一门技能去掌握。
另一方面,老师在上课提到了半导体在今后发展趋势,为此我感到比较欣喜,因为我现在的学习内容和这个方向相关。
起初,我觉得作为传统制造业来说,它的发展优势并不明显,多年来一直不温不火,技术革新的地方也不多。
但是,现在随着人工智能的兴起,对于集成电路的要求也就越来越高,进而也就可能带动半导体行业的发展和进步。
除此之外,老师在课堂上提到的Python语言,我觉得在今后也大有用途,这也应该是我学习任务的一部分。
通过这次实例设计,我对Quartus ii软件和Verilog HDL语言有了更深一步的了解。
这次所用到的软件版本是在网上找的9.0版,我觉得软件的安装过程比较复杂。
结合网上的基础视频讲解和书本上的介绍,我对软件的基础使用有了一个大致的认识。
由于是第一次接触这方面的内容,这次的设计实验我也是选择了一个比较简单的同步4位计数器设计。
按照书上的例子,一步一步的去设置,编译,最后还是勉强实现了基本要求。
当然,在这个学习过程中,我也有遇到过许多问题。
从一开始的软件安装,到编译时的语句修改,再到最后的波形仿真,我都反复进行了许多次。
虽然,这次仅仅只是做了一个小的实验设计,涉及到的知识还不够多,难度也不算大,但是对于我来说收获却很多。
这其中也得到了老师和同学们的帮助,才使我更快的了解了相关的知识点。
借助这次实验设计,我在网上找到了学习视频和相关的学习资料,接下来就是准备买一快小的学习开发板,进行更加深入的学习研究。
同时,我也会关注相关行业的动态,了解更多新闻资讯。
四、参考文献:
[1]潘松.EDA技术实用教程.北京:科学出版社;
[2]周新.轻松学会FPGA设计与开发.北京:电子工业出版社;
[3]黄平.基于Quartus II的FPGA/CPLD数字系统设计与应用.北京:化学工
业出版社;。