基于fpga的音乐流水灯设计内容摘要:

IC 技术融合的结果,涵盖了实时化数字信号处理技术、高速数据收发器、复杂计算以及嵌入式系统设计技术的全部内容。 赛灵思和 Altera 也推出了相应 SOCFPGA 产品,制造工艺达到 65nm ,系统门数也基于 FPGA 的音乐流水灯设计 4 超过百万门。 并且,这一阶段的逻辑器件内嵌了硬核 高速乘法器、 Gbits 差分串行接口、时钟频率高达 500MHz 的 PowerPC™ 微处理器、软核 MicroBlaze、 Picoblaze、 Nios 以及 NiosII,不仅实现了软件需求和硬件设计的完美结合,还实现了高速与灵活性的完美结合,使其已超越了 ASIC 器件的性能和规模,也超越了传统意义上 FPGA 的概念,使PLD 的应用范围从单片扩展到系统级。 未来,赛灵思高层透露,该公司正在研制采用全新工艺的新型 FPGA,这种 FPGA 将集成更大的存储单元和其他功能器件, FPGA 正向超级系统芯片的方向发展。 2 月 5 日,赛灵思发布了采用 40nm 和 45nm 的 Spartan - 6 和Virtex - 6FPGA 系列,并开启了目标设计平台这一新的设计理念,相信 FPGA 的应用会得到更大的发展。 3 Verilog HDL 语言介绍 硬件描述语言 (Hardware Description Language)是硬件设计人员和电子设计自动化 (EDA)工具之间的界面其主要目的是用来编写设计文件建立电子系统行为级的仿真模型即利用计算机的巨大能力对用 Verilog HDL或 VHDL建模的复杂数字逻辑进行仿真然后再自动综合以生 成符合要求且在电路结构上可以实现的数字逻辑网表 (Netlist),根据网表和某种工艺的器件自动生成具体电路然后生成该工艺条件下这种具体电路的延时模型仿真验证无误后用于制造 ASIC芯片或写入 CPLD和 FPGA器件中 ,在 EDA技术领域中把用 HDL语言建立的数字模型称为软核 Soft Core把用 HDL建模和综合后生成的网表称为固核 (Hard Core)对这些模块的重复利用缩短了开发时间提高了产品开发率提高了设计效率随着 PC平台上的 EDA工具的发展 ,PC平台上的 Verilog HDL和 VHDL仿真综合性能已相当优越 这就为大规模普及这种新技术铺平了道路目前国内只有少数重点设计单位和高校有一些工作站平台上的 EDA工具而且大多数只是做一些线路图和版图级的仿真与设计只有个别单位展开了利用 Verilog HDL和 VHDL模型包括可综合和不可综合的进行复杂的数字逻辑系统的设计随着电子系统向集成。 Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。 被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。 数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。 Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构 组成以及包含响应监控和设计验证方面的时延和波形产生机制。 所有这些都使用同一种建模语言。 此外, Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。 Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。 因此,用这种语言编基于 FPGA 的音乐流水灯设计 5 写的模型能够使用 Verilog仿真器进行验证。 语言从 C编程语言中继承了多种操作符和结构。 Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。 但是, Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。 当然 ,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。 Verilog HDL语言最初是于 1983年由 Gateway Design Automation 公司为其模拟器产品开发的硬件建模语言。 那时它只是一种专用语言。 由于他们的模拟、仿真器产品的广泛使用, Verilog HDL 作为一种便于使用且实用的语言逐渐为众多设计者所接受。 在一次努力 增加语言普及性的活动中, Verilog HDL语言于 19 90年被推向公众领域。 Open Verilog International( OVI)是促进 Verilog发展的国际性组织。 1992年, OVI决定致力于推广 Verilog OVI标准成为 IEEE标准。 这一努力最后获得成功, Verilog 语言于1995年成为 IEEE标准,称为 IEEE Std1364- 1995。 完整的标准在 Verilog硬件描述语言参考手册中有详细描述。 4 QuartusII 开发环境 和 仿真 软件介绍 QuartusII 软件介绍 Quartus II 操作简单方便,接口人性化,设计者很容易上手,且在短时间内就可完成设计,所以很受工程师的认可。 受到了业界的好评,成为市场广为接纳的通用接口。 Quartus II具有工作群组的设计环境 EDA整合、先进的编译特性和突破临街的验证环境,是设计能更有效、更完善地规划百万门以上的逻辑门设计,并加以验证。 QuartusII 的功能主要有以下几个方面: 第一款从 FPGA 至掩膜器件的完整设计工具。 Quartus II 软件可在 CPLD/FPGA 开发中提供 Hard Copy掩膜器件的设计性能参数。 设计者在实现最终掩膜器件之前,获得 Hard Copy 器件的性能、功耗、逻辑单元布局以及 I/O分配。 Hard Copy 规则检查器将对原始设计进行检查和校验,确保设计符合工业标准设计规则,避免转换出错。 Hard Copy 文件向导将自动收集相关文件信息。 交付 Altera Hard Cory 设计中心。 使用 QuartusII,能够预测和验证器件的性能,其性能比同样的 FPGA 平均快一半。 前期 I/O 分配和验证。 QuartusII 设计可以在设计文件完成之前进行 I/O 分配和验证。 设计者不需要重 新编译设计来检查 I/O 分配的有效性。 QuartusII 还采用新的分配特性,如何多选信号和一次改变一组信号的属性,设计者更容易建立和管理引脚的分配。 QuartusII 芯片编辑器允许设计者在完成布局布线之后查看 Altera 器件的内部详细结构,增量编辑逻辑单元 LE 和 I/O 单元的配置和锁相环参数。 几分钟内就可以在器基于 FPGA 的音乐流水灯设计 6 件中实现这些改变,并保持设计其他部分的时间特性,而不必重新编译整个设计。 少量修改 VHDL 或 Verilog HDL 源文件,用 QuartusII 或第三方综合软件进行逻辑综合之后,新的增量布线特性可 以在布局布线过程中把逻辑布局限制在新的或改变的逻辑中。 这个功能把编译效率实际平均提高 40% ,同时不影响以前设计优化区域的布局和时序。 QuartusII 设计软件默认安装 SOPC Builder,自动添加、参数化和链接 IP核,包括嵌入式处理器、协处理器、外设和用户定义逻辑。 QuartusII 软件是全新的体系,设计流程的主要阶段都可独立执行,这些可执行阶段接受简单的命令行参数,易于编写脚本或从 MakeFile 运行,自动启动专门的设计流程。 QuartusII 支持的第三方工具中,综合工具包括很多,仿 真工具也有很多。 . 软件介绍 Modelsim 仿真工具是 Model 公司开发的。 它支持 Verilog、 VHDL 以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在 Dataflow窗口查看某一单元或模块的输入输出的连续变化等,比 Quartus 自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。 ModelSim 分几种不同的版本: SE、 PE 和 OEM,其中集成在 Actel、 Atmel、 Altera、Xilinx 以及 Lattice 等 FPGA 厂商设计工具中的均是其 OEM 版本。 比如为 Altera 提供的OEM 版本是 ModelSimAltera,为 Xilinx 提供的版本为 ModelSim XE. SE 版本为最高级版本 ,在功能和性能方面比 OEM 版本强很多 ,比如仿真速度方面 ,还支持 PC 、 UNIX 、 LIUNX 混合平台。 5 设计 Verilog HDL 代码 和 Modelsim 仿真结果分析 本课题一共分为 6个模块,分别是: 顶层模块 、复位模块、按键模块、核心模块、流水灯模块和 数 码管模块,下面一一进行解析说明。 顶层模块 分析顶层模块代码 module top(clk,rst,key,beep,dat,sec,led)。 input clk,rst。 基于 FPGA 的音乐流水灯设计 7 input [2:0] key。 output beep。 output [7:0] dat,sec,led。 wire [2:0] keyout。 wire stop。 wire [16:0] t。 wire rst0。 reset i1(.clk(clk),.rst(rst),.rst0(rst0))。 key i2(.clk(clk),.rst(rst0),.key(key),.keyout(keyout))。 play i3(.clk(clk),.rst(rst0),.key(keyout),.t(t),.stop(stop))。 beep i4(.clk(clk),.rst(rst0),.stop(stop),.count(t),.bee(beep))。 segment i5(.clk(clk),.rst(rst0),.count(t),.dat1(dat),.sec1(sec))。 led i6(.clk(clk),.rst(rst0),.count(t),.led(led))。 endmodule RTL 视图 从 RTL视图中,可以清晰地看到 6个模块。 基于 FPGA 的音乐流水灯设计 8 总结顶层模块 输入信号有系统时钟、复位信号、按键键值;输出信号有数码管的位选、数码管的段选和 LED端口。 复位信号经过复位模块处理,然后分别传递给其他的模块;按键通过按键模块进行处理,然后把键值传递给核心模块;核心模块根据键值把计数值和停止信号传递给数码管、流水灯和蜂鸣器模块,这三个模块分别作出相应的操作。 复位模块 在数字电路系统里面,无论是大系统还是小一点的系统,复位模块都是必不可少的,以防止 FPGA 运行到不是预期的状态,按 下复位键,便可以回归到初试状态,极大地保证了系统的稳定性。 分析复位模块代码 module reset(clk,rst,rst0)。 input clk,rst。 //输入时钟信号和复位按键信号 output rst0。 //输出处理后的复位信号 reg c1,c2,c3。 //分别定义三个寄存器 always@(posedge clk) c1=rst。 //在时钟的上升沿锁存键值 always@(posedge clk or negedge c1) //异步复位,同步释 放 begin if(!c1) begin c2=0。 c3=0。 end else begin 基于 FPGA 的音乐流水灯设计 9 c2=139。 b1。 c3=c2。 end end assign rst0=c3。 endmodule modelsim 仿真结果 总结复位模块 刚进入复位模块时,就采用 D触发器对复位信号进行处理,以防止出现下图所示的复位信号抖动,引发整个电路无故地复位,增强稳定性。 异步复位与同步复 位各有优劣, FPGA 的寄存器有支持异步复位专用的端口,采用异步复位无需增加器件的额外资源,但是异步复位也存在隐患。 异步时钟域的亚稳态问题同样存在于异步复位信号和系统时钟信号之间。 同步复位在时钟信号 clk 的上升沿触发是进行系统是否复位的判断,这降低了亚稳态出现的概率,然而它的缺点就在于需要消耗更多的器件资源,无法充分利用专用的复位端口 CLR。 由于异步复位与同步复位都存在弊端,所以就采用“异步复位、同步释放”的方法。 基于 FPGA 的音乐流水灯设计 10 按键模块 在按键按下的 10ms 中之内,按键信号会发生抖动,如下图所示: 也就是在按下 的 10ms 内,按键信号类似于多次被按下,这是我们不想得到的结果,为了避免按键抖动,就需要每 20ms 检测一次按键值。 本课题采用的时钟频率是 50MHZ,代码设计按键消抖模块是采用每 4096( 2039。 hf_ffff),约 80ms 检测一次按键,这样就会消除抖动。 分析按键模块代码 module key(clk,rst,key,keyout)。 input clk,rst。 //时钟信号和异步复位信号输入 input [2:0] key。 //输入 3个按键 output [2:0] keyout。 //处理后的按键信号 reg [2:0] key1,key2。 reg [19:0] t。 always@(posedge clk or negedge rst) begin if。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。