【数字系统】数字时钟设计:LCD显示静态字符串/60、24进制计数器 Quartus II 环境/Verilog HDL语言/编程+仿真+开发板/FPGA/CPLD/EDA

本文介绍了基于FPGA的数字时钟设计,包括LCD显示静态字符串和60/24进制计数器的Verilog HDL实现,通过Quartus II进行仿真和开发。实验步骤详细,涉及LCD模块、计数器模块以及数字时钟顶层模块的设计与功能验证。
摘要由CSDN通过智能技术生成

一、 实验目的

1. 了解基于FPGA的数字电子时钟的实现原理及设计方法; 掌握Quartus_II环境下的模块化、层次化的设计与实现方法; 掌握数字应用系统的 Verilog HDL设计与实现技术。

2. 对数字时钟进行功能模块划分,对各模块进行详细的功能定义。

3. 对划分好的功能模块进行详细编程设计及仿真设计,包括定时计数、显示、时间调整、响铃等。

4. 分析仿真结果,并进行顶层模块设计及功能测试。

完整可执行工程文件见文末。

二、 实验过程步骤

1、设计模块1:LCD显示静态字符串lcd_mode

        a.模块功能要求

        (1)硬件工作原理

        LCD模块内部示意图如下所示:

         (2)DDRAM 数据显示用的RAM(Data Display RAM)

        这块存储器是用来存放我们要LCM显示的资料,只要将标准的ASCII码放入DDRAM中,内部线路会自动以该ASCII码为地址,将相应的数据送到显示器上。

        IR 寄存器负责存储MAX II要写给LCM的指令码。当芯片要下一个命令到IR寄存器时,必须要控制LCM的RS、R/W及E这三个引脚。当RS和R/W引脚信号均为0,E引脚信号由1变为0时,就会把在lcd_data[0]-[7]引脚上的数据存入IR寄存器。

        本实验中所使用的字符与字符码对照表如下:

        (3)控制器指令

        程序流程图如下:

        在LCD上显示静态字符串,进行静态字符的对齐设置在Set address这一步骤中进行,即设置LCM起始字符的显示位置。

        b.实验步骤

        (1)利用wizard新建项目,所选器件为MAX II 系列型号为EPM1270T144C5N的器件。

        (2)新建Verilog文件,名称与模块名一致,保存为lcd1602.v。程序内容如下:

module lcd1602(clk,rst,rs,rw,lcd_en,lcd_data);
input clk,rst;
output rs,rw,lcd_en;
output [7:0]lcd_data;

wire en_20us,en_200us,en_1s;

reg [3:0]state_q,data_q;
reg [7:0]lcd_data;
reg lcd_en;

assign rw=1'b0;
assign rs=state_q[3] | state_q[2] & state_q[1] & ~state_q[0];
assign state_end=en_200us & ~lcd_en & (~rs | data_q[3] & data_q[2] & data_q[1] & data_q[0]);

div_mode U1(clk,rst,1'b1,en_20us,en_200us,en_1s);

always@(posedge clk or negedge rst)
if(~rst)
	state_q<=4'b0000;
else if(state_end)
	begin
		if(state_q[3])  //when q[3]=1xxx(8), give 5
			state_q<=4'b0101;
		else
			state_q<=state_q +1'b1;	//state_q's period = 5-8
	end

always@(posedge clk or negedge rst)
if(~rst)
	data_q<=4'b0000;
else if(state_end)
	data_q<=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值