北京革新创展科技有限公司-BICE-EDA时序电路设计实验(实验2.3 十进制加减计数器)

BICE EDA实验:Verilog实现十进制加减计数器
本实验通过北京革新创展科技有限公司的BICE-EDA/SOPC实验箱,使用Verilog语言设计一个能够进行0-99循环加减计数的电路。实验涉及QuartusⅡ软件操作,包括设计、仿真、编译、下载及硬件验证。通过开关控制计数方向,数码管显示结果。

实验2.3 十进制加减计数器
一、实验准备
该实验需要用到北京革新创展科技有限公司B-ICE-EDA/SOPC实验箱主板上的F1-F6组按键,SW1-SW8组开关和数码显示模块。其中F1-F6已经固定连接到实验平台中的FPGA_CON1处;SW1-SW8组开关已经固定连接到实验平台中的FPGA_CON1和FPGA_CON2处,无需用户设置;8个共阳极七段数码管的8个段码,共用FPGA I/O,已经固定连接到实验平台中的FPGA_CON1处,8个共阳极七段数码管的8个位选已经固定连接到实验平台中的FPGA_CON1处。
请把控制拨码开关CTRL_SW中开关SEL1, SEL2拨置于下逻辑电平为00,使DP9数码管显示1。

二、实验目的
1、了解计数器的原理;
2、熟悉QuartusⅡ软件的相关操作,掌握数字电路设计的基本流程;
3、介绍QuartusⅡ软件,掌握基本的设计思想,软件环境的参数配置,仿真,管脚分配,下载等基本操作。
4、熟悉北京革新创展科技有限公司B-ICE-EDA/SOPC实验箱及其核心板硬件环境。

三、实验原理
本实验是实现0-99的循环计数,增减可以控制,结果用两位数码管显示。

四、实验内容
1、用Verilog语言设计一个十进制加减计数器,并进行仿真和分析;
2、用Quartus II软件进行编译、下载到实验平台上进行验证。

五、设计原理框图
如图1 设计原理框图所示
六、引脚分配情况
下表为北京革新创展科技有限公司B-ICE-EDA/SOPC-IEELS Platform开发实验平台引脚分配表:
设计端口 芯片引脚 开发平台模块
clk T1
reset AB14 F1
mode M16 SW1
a U21 8xSEG LA
b R22 8xSEG LB
c T17 8xSEG LC
d R21 8xSEG LD
e P22 8xSEG LE
f R17 8xSEG LF
g R20 8xSEG LG
h P20 8xSEG LH
sel[1] AA20 8xSEG

在 EDA 环境下进行十进制计数器设计与实现,可从实验准备、原理和代码实现等方面进行。 ### 实验准备 进行十进制计数器实验时,若使用北京革新科技有限公司 B - ICE - EDA/SOPC 实验箱主板,需用到 F1 - F6 组按键、SW1 - SW8 组开关和数码显示模块。其中,F1 - F6 固定连接到实验平台中的 FPGA_CON1 处;SW1 - SW8 组开关固定连接到实验平台中的 FPGA_CON1 和 FPGA_CON2 处,无需用户设置;8 个共阳极七段数码管的 8 个段码和 8 个位选均已固定连接到实验平台中的 FPGA_CON1 处。此外,要把控制拨码开关 CTRL_SW 中开关 SEL1,SEL2 拨置于下逻辑电平为 00,使 DP9 数码管显示 1 [^1]。 ### 设计原理 十进制计数器可实现从 0 到 9 的法计数,以及从 9 到 0 的法计数。以二位十进制计数器为例,其原理是在时钟信号的驱动下进行计数操作,当复位信号有效时,计数器清零;当计数到 00 时,计数器回到 99 重新开始计数;当个位为 0 时,十位 1,个位回 9 [^2]。 ### 代码实现 以下是基于 FPGA 的二位十进制计数器的 VHDL 代码示例: ```vhdl LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; -- 二位十进制计数器 99—0 循环法计数 ENTITY down_cnt IS PORT( clk: IN STD_LOGIC; -- 时钟 rst: IN STD_LOGIC; -- 复位 cnt_H: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -- 计数器十位 cnt_L: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) -- 计数器个位 ); END down_cnt; ARCHITECTURE trans OF down_cnt IS -- 定义信号 SIGNAL count_H: STD_LOGIC_VECTOR(3 DOWNTO 0); -- 计数器十位 SIGNAL count_L: STD_LOGIC_VECTOR(3 DOWNTO 0); -- 计数器个位 BEGIN -- 计数器控制 PROCESS(clk, rst) BEGIN IF (rst = '1') THEN -- 复位清零 count_H <= "0000"; count_L <= "0000"; ELSIF (clk'EVENT AND clk = '1') THEN IF (count_H = "0000" AND count_L = "0000") THEN -- 计数到 00 count_H <= "1001"; -- 回到 99 count_L <= "1001"; ELSIF (count_L = "0000") THEN -- 个位为 0 count_H <= count_H - "0001"; -- 十位 1 count_L <= "1001"; -- 个位回 9 ELSE count_L <= count_L - "0001"; -- 个位 1 END IF; END IF; END PROCESS; cnt_H <= count_H; cnt_L <= count_L; END trans; ``` ### 仿真与验证 在 Quartus 等 EDA 工具中对上述代码进行编译、综合和仿真,验证计数器的功能是否符合设计要求。通过设置不同的时钟信号和复位信号,观察计数器的输出结果,确保其能正确实现十进制法计数功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值