玩转Zynq连载18——[ex01] 小试牛刀,基于Zynq PL的第一个工程
2019年08月25日 17:28 发布者:rousong1989
玩转Zynq连载18—— 小试牛刀,基于Zynq PL的第一个工程 更多资料共享腾讯微云链接:https://share.weiyun.com/5s6bA0s百度网盘链接:https://pan.baidu.com/s/1XTQtP5LZAedkCwQtllAEyw 提取码:ld9c 腾讯微云链接:https://share.weiyun.com/5s6bA0s百度网盘链接:https://pan.baidu.com/s/1XTQtP5LZAedkCwQtllAEyw 提取码:ld9c 1概述蜂鸣器是一种最简单的发声元器件,它的应用也非常广泛,大都是作为报警或发声提醒装置。比如台式电脑在刚开机时,通常主板上会发出一声较短的尖锐的“滴……”的鸣叫声,提示用户主板自检通过,可以正常进行后面的启动;而如果是1长1短或1长2短的鸣叫声,则表示可能发生了电脑内存或显卡故障;当然还可以有其他不同的鸣叫声提示其他的故障,总而言之,可别小看了这颗区区几毛钱的蜂鸣器,关键时刻还挺有用的。可以毫不夸张的说,蜂鸣器也算是一种人机交互的手段。PWM(Pulse Width Modulation),即脉冲宽度调制,如图所示,PWM的输出只有高电平1和低电平0。PWM不停的重复输出周期为T,其中高电平1时间为t的脉冲,t/T是它的占空比,1/T是它的频率。如图所示,这是Zstar板上蜂鸣器的电路原理图,BEEP网络连接到FPGA的IO上,当BEEP = 1时,三极管Q1的BE导通,则CE也导通,蜂鸣器U2就有电流回路,那么蜂鸣器就会发声。同理,BEEP = 0时,Q1截止,蜂鸣器无电流回路,那么蜂鸣器就不会发出声音。 如图所示,基于蜂鸣器在FPGA的IO输出1就发声、0则不发声的原理,我们给IO口一个占空比为10%的PWM的信号,让蜂鸣器间歇性的发声鸣叫。如果它的频率高,则发声就显得相对尖锐急促一些;如果它的发声频率低,则发声就显得低沉平缓一些。 在我们给出的实例代码中,我们期望产生一个输出频率为1Hz(1s)、占空比为10%的PWM信号去驱动蜂鸣器的发声。因此,我们使用系统时钟25MHz进行计数,每计数25,000,000次,这个计数器就清零重新计算。因为这个计数器是2进制的,要能够表达0-24,999,999的每一个计数值,那么这个2进制计数器至少必须是25位的(代码中取计数器为28位)。此外,为了得到输出的PWM占空比为10%,那么我们只要判断计数值小于最大计数值的1/10即2,500,000时,输出高电平1,反之输出低电平0。 创建一个最终可以跑在Zynq的PL上的应用工程,最基本的可以归纳为以下几个步骤。下面我们会逐一进行实践操作。流程不过是一个熟能生巧的过程,只要大家认真走过一遍,后续大量实例中不断操作,反复练习就能轻松掌握。 2 新建Vivado工程 参考文档《玩转Zynq-工具篇:新建Vivado工程.pdf》。 3 创建工程源码 如图所示,选中Project Manager à Sources à Design Sources,右键单击,弹出菜单中选中Add Sources…。图新建Verilog源码菜单 接着如图所示,使用默认选项Add or create design sources,点击“Next”。图选择文件类型 如图所示,单击Create File按钮。图新建设计文件 如图所示,设置创建的文件类型(File type)为Verilog;文件名(File name)为zstar;文件路径(File location)为默认的