338第11 章 常用逻辑的Verilog HDL 实现 Verilog HDL 语言作为一种通用硬件描述语言,既可以完成数字系统核心处理,又可以完成外围控制芯片、存储芯片和显示器件的接口
加上可编程逻辑器件应用的日益广泛,有些基本模块的使用频率会相对较高
为了让读者更好掌握Verilog HDL 语言,并学以致用,本章给出了一些难度适中的常用的Verilog HDL 开发实例,包括时钟电路、数学运算、数码管、按键、CRC 编解码、存储器以及SPI 接口协议等
1 时钟处理电路的Verilog HDL 实现 在CPLD/FPGA 设计中,时钟可以算作系统的“血液”
在时序电路设计中,几乎所有的信号都需要依靠时钟向前传递,因此在进行 VHDL 开发之前需要确定所需的时钟频率
如果是同步设计,还需要对异步输入信号进行同步整形处理
本节主要介绍分频电路、DCM/PLL模块以及同步整形电路的原理和实现
1 整数分频模块 分频器是一种基本电路,通常用来对某个给定频率进行分频,以得到所需的频率
整数分频是数字逻辑开发中最基本的应用
1.偶数分频模块 偶数倍分频是最简单的一种分频模式,可通过计数器计数实现,有多种实现方法
下面介绍一种最常用的方法,如要进行 N 倍偶数分频,那么可由待分频的时钟触发计数器计数,当计数器从 0 计数到 N/2-1 时,输出时钟进行翻转,并给计数器一个复位信号,使得下一个时钟从零开始计数,以此循环下去
这种方法可以实现任意的偶数分频
例11-1 给出的是一个 16 分频电路,其它倍数的分频电路可通过修改计数器的上限值得到
例11-1 :使用Verilog HDL 程序完成16 分频电路
module clk_div_16( clk_in, rst_n, clk_out ); input clk_in; input rst_n; out