VHDL设计FPGA数字系统:电子万年历
如图4.7所示,当输入的panduan为01时,日计数器计数至30时,等待至clk信号下一个脉冲上升沿到来时,进位输出c产生一个输出脉冲,同时日计数器再次从1开始计数,故设计正确。
(3)当输入信号panduan为10时,日计数器的波形仿真如图4.8所示:
图4.8 判断信号panduan为10时日计数器的仿真图
如图4.8所示,当输入的panduan为10时,日计数器计数至28时,等待至clk信号下一个脉冲上升沿到来时,进位输出c产生一个输出脉冲,同时日计数器再次从1开始计数,故设计正确。
(4)当输入信号panduan为11时,日计数器的波形仿真如图4.9所示:
图4.9 判断信号panduan为11时日计数器的仿真图
如图4.9所示,当输入的panduan为11时,日计数器计数至29时,等待至clk信号下一个脉冲上升沿到来时,进位输出c产生一个输出脉冲,同时日计数器
20
VHDL设计FPGA数字系统:电子万年历
再次从1开始计数,故设计正确。 4.1.4月计数器模块
月计数器为12进制计数器,但需要为日计数器的进制提供判断信号,所以该模块需要有判断信号的输出。此外,由于闰年的2月和平年的2月,判断信号输出不同,所以该模块需要从年计数模块引入闰年的判断信号。最终,其必须达到如下设计要求:若月份是大月,则该信号pan输出00,若月份是小月,则该信号pan输出01,若月份是平年的2月,则该信号pan输出10,若月份是闰年的2月,则该信
号pan输出11。同样,在此程序中加入了手动清零信号,由K8控制,在校时时产生错误可清零。
月的计数器通过VHDL语言编程,编译成功可生成器件,其器件如图4.10所示。
cnt_1clkrunresecpan[1..q1[3..q2[3..inst3 图4.10 月计数模块器件生成图
端口信息: 输入端口:
clk:时钟源输入端口 reset:重置清零端口 run:开始月份计数 输出端口:
q1:月计数低位端口 q2:月计数高位端口 c:进位输出端口
panduan:月份状态判断输出端口
月计数器的波形仿真如图4.11至图4.12所示:
1)当输入信号run为1时,即表示该年份为闰年,月计数器的波形仿真如图4.11所示:
21
VHDL设计FPGA数字系统:电子万年历
图4.11 闰年时月计数器的仿真图
如图4.11所示,当输入信号run为高电平,即表示闰年时,在2月份,输出判断信号pan为11;在大月,输出判断信号pan为00;在小月,输出判断信号pan为01;与日计数器的进制判断要求一致,故设计正确。
2)当输入信号run为0时,即表示该年份为平年,月计数器的波形仿真如图4.12所示:
图4.12 平年时月计数器的仿真图
如图4.12所示,当输入信号run为低电平,即表示平年时,在2月份,输出判断信号pan为10;在大月,输出判断信号pan为00;在小月,输出判断信号pan为01;与日计数器的进制判断要求一致,故设计正确。 4.1.5年低位计数器模块
年低位计数器为100进制计数器,同时在年低位计数器中需要判断该数字是否能被4整除,若可以再判断其是否为100,不是则此年份为闰年,是则将判断结果输出至年高位计数器,进一步判断。除此,低位计数器不仅要有触发输入,也要有进位输出,作为年高位计数器的触发输入。并在此程序中加入了手动清零
22
VHDL设计FPGA数字系统:电子万年历
按键,由K8控制,在校时时产生错误可清零。年低位计数器通过VHDL语言编程,编译成功可生成器件,其器件如图4.13所示。
year_1clkresety1[3..0]y2[3..0]runcinst6 图4.13 年低位计数器器件生成图
信息端口: 输入端口:
clk:时钟源输入端口 reset:重置清零端口 run:开始年份计数 输出端口:
y1:年低位计数低位端口 y2:年低位计数高位端口 c:进位输出端口
年低位计数器的波形仿真如图4.14所示:
图4.14 年低位计数器的仿真图
如图4.14所示,当年低位计数器计数至99时,等待至clk信号的下一个脉冲上升沿到来时,进位输出信号c产生一个脉冲输出,同时年低位计数器重新从0开始计数。此外,从图中可以观察到每过4年,信号run都会输出一个脉冲,故设计正确。
4.1.6年高位计数器模块
23
VHDL设计FPGA数字系统:电子万年历
年高位计数器是100进制计数器,因为本设计是万年历,所以年高位计数器不用进位输出。此外,若接收到年低位计数器的判断信号,则判断年高位数字是否能被4整除,若可以则此年份为闰年。并在此程序中加入了手动清零按键,由K8控制,在校时时产生错误可清零。年高位计数器通过VHDL语言编程,编译成功可生成器件,其器件如图4.15所示。
year_2clkresety3[3..0]y4[3..0]inst7 图4.15 年高位计数器器件生成图
信息端口: 输入端口:
clk:时钟源输入端口 reset:重置清零端口 输出端口:
y3:年高位计数低位端口 y4:年高位计数高位端口
年高位计数器的波形仿真如图4.16所示:
图4.16 年高位计数器的仿真图
如图4.16所示,当年高位计数器计数至99时,等待至clk信号的下一个脉冲上升沿到来时,计数器重新从0开始计数,故设计正确。 4.1.7校准模块
校准模块的主要功能是改变要校准的计数器的时钟脉冲信号为频率为1Hz的
24