消息。
? 在行为级描述中,Verilog HDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。
? 能够使用门和模块实例化语句在结构级进行结构描述。
? 如图显示了Verilog HDL的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。
? Verilog HDL还具有内置逻辑函数,例如&(按位与)和|(按位或)。 ? 对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。
? 可以显式地对并发和定时进行建模。 ? 提供强有力的文件读写能力。
? 语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;例如,事件队列上的事件顺序在标准中没有定义。
图2.12混合设计层次图
第三章 数字化时钟系统硬件设计
3.1 系统核心板电路分析
本系统采用的开发平台标配的核心板是QuickSOPC,可以实现EDA、SOP和DSP的实验及研发。本系统采用QuickSOPC标准配置为Altera公司的EP1C6Q240C8芯片。 (1) 核心板的硬件资源
核心板采用4层板精心设计,采用120针接口。QuickSOPC核心板的硬件原理框图如图2-1所示:
图3.1 QuickSOPC硬件方块图
(2) FPGA电路
核心板QuickSOPC上所用的FPGA为Altera公司Cyclone系列的EP1C6Q240。EP1C6Q240包含有5980个逻辑单元和92Kbit的片上RAM。EP1C6Q240有185个用户IO口,封装为240-Pin PQFP。核心板EP1C6Q240器件特性如表2-1。
表3-1 核心EP1C6Q240器件特性:
特性
逻辑单元(LE)
核心板EP1C6Q240器件
5980
M4K RAM 块 RAM总量(bit) PLL(个)
最大用户IO数(个)
配置二进制文件(.rbf)大小(bit) 可选串行主动配置器件
20 92160 2 185
EPCS1 EPCS4 EPCS16
(3) 配置电路
Cyclone FPGA的配置方式包括:主动配置模式、被动配置模式以及JTAG配置模式。本系统采用的是JTAG配置模式下载配置数据到FPGA。
通过JTAG结果,利用Quartus II软件可以直接对FPGA进行单独的硬件重新配置。Quartus II软件在编译时会自动生成用于JTAG配置的.sof文件。Cyclone FPGA设计成的JTAG指令比其他任何器件操作模式的优先级都高,因此JTAG配置可随时进行而不用等待其他配置模式完成。JTAG模式使用4个专门的信号引脚:TDI、TDO、TMS以及TCK。JTAG的3个输入脚TDI、TMS和TCK具有内部弱上拉,上拉电阻大约为25kΩ。在JGTA进行配置的时候,所有用户IO扣都为高阻态。 (4) 时钟电路
FPGA内部没振荡电路,使用有源晶振是比较理想的选择。EP1C6Q240C8的输入的时钟频率范围为15.625~387MHz,经过内部的PLL电路后可输出15.625~275MHz的系统时钟。当输入时钟频率较低时,可以使用FPGA的内部PLL调整FPGA所需的系统时钟,使系统运行速度更快。
核心板包含一个48MHz的有源晶振作为系统的时钟源。如图2-2所示。为了得到一个稳定、精确的时钟频率,有源晶振的供电电源经过了LC滤波。
本系统硬件整体设计框图如图2-3所示:
图3.2数字时钟系统硬件电路总体框图
3.2 系统主板电路分析 3.2.1
时钟模块电路
FPGA内部没振荡电路,使用有源晶振是比较理想的选择。EP1C6Q240C8的输入的时钟频率范围为15.625~387MHz,经过内部的PLL电路后可输出15.625~275MHz的系统时钟。当输入时钟频率较低时,可以使用FPGA的内部PLL调整FPGA所需的系统时钟,使系统运行速度更快。
核心板包含一个50MHz的有源晶振作为系统的时钟源。为了得到一个稳定、精确的时钟频率,有源晶振的供电电源经过了LC滤波。
图3.3 系统时钟电路图
3.2.2 显示电路
由于本设计需要显示时间信息包括:时、分、秒,显所以采用主板上七段数码管显示电路与系统连接实现显示模块的功能。
主板上七段数码管显示电路如图2-4 所示,RP4和 RP6 是段码上的限流电阻,位码由于电流较大,采用了三极管驱动。
图3.4七段数码管显示电路图
数码管 LED显示是工程项目中使用较广的一种输出显示器件。常见的数管有共阴和 共阳 2 种。共阴数码管是将 8 个发光二极管的阴极连接在一起作为公共端,而共阳数码管是将 8 个发光二极管的阳极连接在一起作为公共端。公共端常被称作位码,而将其他的 8 位称作段码。如图 2-5所示为共阳数码管及其电路,数码管有 8 个段分别为: = 2'b11; 定义标志位
reg [4:0] dout1 = 5'b11111; reg [4:0] dout2 = 5'b11111; reg [4:0] dout3 = 5'b11111; 寄存器 wire [4:0] key_done; 按键消抖输出 reg [15:0] beep_count = 16'h0; 蜂鸣器寄存器
reg [15:0] beep_count_end = 16'hffff; 蜂鸣器截止寄存器 reg clktime_en = 1'b1; 闹钟使能寄存器 reg sec ; 1秒时钟 reg clk1; 1ms时钟 reg beep_r; 寄存器 wire beepen; 闹钟使能信号 4.1.1 模块框图
通过quartus II的creat symble for current file功能生成框图如下:
图4.2生成的符号图