【EDA技术】 实验二 BCD码输出的60进制计数器的VHDL

这篇具有很好参考价值的文章主要介绍了【EDA技术】 实验二 BCD码输出的60进制计数器的VHDL。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验目的

(1) 熟悉EDA软件,并能熟练使用。

(2) 分析设计任务,根据任务要求完成设计内容。

(3) 利用软件对设计内容进行仿真调试,得到正确运行结果。

二、实验要求

(1)设计具有异步清零,同步使能的60进制计数器,并用VHDL语句进行例化

(2)设计七段译码器的VHDL代码,利用元件例化的方式实现计数译码器的设计

三、实验步骤

(1) 建立工作库文件夹和编辑设计文件

File->New Project Wizard

【EDA技术】 实验二 BCD码输出的60进制计数器的VHDL

【EDA技术】 实验二 BCD码输出的60进制计数器的VHDL

(2) 创建工程

File->New->Verilog HDL File

【EDA技术】 实验二 BCD码输出的60进制计数器的VHDL

(3) 全程编译

【EDA技术】 实验二 BCD码输出的60进制计数器的VHDL
60进制计数器
【EDA技术】 实验二 BCD码输出的60进制计数器的VHDL
七段译码器
【EDA技术】 实验二 BCD码输出的60进制计数器的VHDL
计数译码器

(4) 时序仿真

【EDA技术】 实验二 BCD码输出的60进制计数器的VHDL
60进制计数器

由上图可知,当时钟使能端信号到来时,低四位会加1;

当低四位加到1001(数字9)时,高四位会加1;

符合计数器规律。

当高四位为0101(5)且低四位为1001(9)时,会产生一个进位信号,

且下一个时钟信号来之后,高四位低四位都会清零。

当RST为1时,低四位高四位全清零。

综合分析可知,这是一个60进制计数器。

【EDA技术】 实验二 BCD码输出的60进制计数器的VHDL
10进制计数器

由上图可知,当时钟信号到来时,DOUT会加1;

当DOUT到1001(数字9)时,COUT进位会加1;

符合10进制计数器规律。

【EDA技术】 实验二 BCD码输出的60进制计数器的VHDL
七段译码器

由仿真波形可知,数字0-9均可用八位二进制数表示出来,且结果是一一对应的;

当输入大于9时,输出为空,保持不变;

当时钟信号继续增加时,译码器会循环输出0-9的二进制数,可以看出来这是一个七段译码器。

【EDA技术】 实验二 BCD码输出的60进制计数器的VHDL
计数译码器

由仿真波形可知,CLK为1,EN使能端为1时,输出加1,且表示为译码形式;

当RST0为高电平时,计数归零。

四、VHDL程序文本

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT60 IS --60进制计数器
	PORT (
   		 CLK,RST,EN:IN STD_LOGIC;
   		 DHOUT:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); --高四位输出
    	    DLOUT:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); --低四位输出
         COUT:OUT STD_LOGIC);
END ENTITY CNT60;
ARCHITECTURE behave OF CNT60 IS
BEGIN
   COUT<='1'WHEN(DHOUT="0101" AND DLOUT="1001")ELSE '0'; --确定进位条件
	PROCESS(CLK,EN,RST)
	BEGIN
	      IF RST='1' THEN DHOUT<="0000";DLOUT<="0000"; --异步清零
	      ELSIF CLK'EVENT AND CLK ='1' THEN 
			IF EN='1' THEN DLOUT<=DLOUT+1;END IF;   --同步使能
			IF(DLOUT=9)THEN DLOUT<="0000";DHOUT<=DHOUT+1;END IF;  --低四位归零设置
	       IF(DHOUT=5 AND DLOUT=9) THEN DHOUT<="0000"; END IF; --高四位归零设置
			  END IF;
END PROCESS;
END ARCHITECTURE behave;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL ;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY SEG7 IS  --七段译码器
	PORT (INDATA: IN STD_LOGIC_VECTOR(3 DOWNTO 0); --输入,4位数,表示0-9
		  ODATA: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));--输出,八位,对应数码管上八段
END ENTITY SEG7;
ARCHITECTURE BHV OF SEG7 IS
	BEGIN
	PROCESS (INDATA)
	BEGIN
		CASE (INDATA) IS
			WHEN "0000" => ODATA<= "0111111" ; --数字0的高电平点亮(公共端共阴极)二进制表示方法
			WHEN "0001" => ODATA<= "0001110" ; --1
			WHEN "0010" => ODATA<= "1011011" ; --2
			WHEN "0011" => ODATA<= "1001111" ; --3
			WHEN "0100" => ODATA<= "1100110" ; --4
			WHEN "0101" => ODATA<= "1101101" ; --5
			WHEN "0110" => ODATA<= "1111101" ; --6
			WHEN "0111" => ODATA<= "0000111" ; --7
			WHEN "1000" => ODATA<= "1111111" ; --8
			WHEN "1001" => ODATA<= "1101111" ; --9
			WHEN OTHERS => NULL;  --其他情况,输出为空
		END CASE; --结束case
	END PROCESS;
END ARCHITECTURE BHV;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT_10 IS   --10进制计数器
	PORT (
   		 CLK,RST,EN:IN STD_LOGIC;
   		 DOUT:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); 
         COUT:OUT STD_LOGIC);
END ENTITY CNT_10;
ARCHITECTURE behave OF CNT_10 IS
BEGIN
   COUT<='1'WHEN(DOUT="1010" )ELSE '0'; --确定进位条件
	PROCESS(CLK,EN,RST)
	BEGIN
	      IF RST='1' THEN DOUT<="0000";
	      ELSIF CLK'EVENT AND CLK ='1' THEN 
			IF EN='1' THEN DOUT<=DOUT+1;END IF;
			IF(DOUT=9)THEN DOUT<="0000";END IF;
			 END IF;
END PROCESS;
END ARCHITECTURE behave;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL ;

ENTITY CNT_10_LED IS --计数译码器
	PORT (CLK0,RST0,EN0: IN STD_LOGIC;
          DOUT0:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END ENTITY CNT_10_LED;

ARCHITECTURE BHV OF CNT_10_LED IS

COMPONENT CNT_10  --计数器
PORT (CLK,RST,EN:IN STD_LOGIC;  
          DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END COMPONENT CNT_10;

COMPONENT SEG7  --7段译码器
PORT (INDATA: IN STD_LOGIC_VECTOR(3 DOWNTO 0); 
		  ODATA: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END COMPONENT SEG7;

SIGNAL IKUN:STD_LOGIC_VECTOR(3 DOWNTO 0); --IKUN🤣 敏感信号
BEGIN
U1:CNT_10 PORT MAP(CLK=>CLK0,RST=>RST0,EN=>EN0,DOUT=>IKUN);
U2:SEG7 PORT MAP(INDATA=>IKUN,ODATA=>DOUT0);
END ARCHITECTURE BHV ;

五、遇到的问题及解决办法

  1. Q10版本之后的Quartus在New中不直接提供软件波形仿真,一般需要调用ModelSim软件进行操作:

        解决办法:按照图示依次点击Tools->Options->General->EDA Tool Options->ModelSim 把路径设置为ModelSim软件所在处。

【EDA技术】 实验二 BCD码输出的60进制计数器的VHDL

  1. VHDL文本正确,工程路径都没问题,波形输出失败,提示ModelSIM调用失败:

        解决办法:检查问题1是否已经解决,解决后关闭软件,以管理员身份启动软件,再次仿真。文章来源地址https://www.toymoban.com/news/detail-433690.html

到了这里,关于【EDA技术】 实验二 BCD码输出的60进制计数器的VHDL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数电实验3】Verilog—1位十进制可逆计数器

    【2022.04西南交大数电实验】 【2022.04.17 更新修改了一个错误: ~clr改为了clr: 另外 ,把代码修得整齐好看了一点】 【代码参考博主weixin_49270464,已进行适当修改,符合实验要求。本代码及波形已通过老师验收。仅供参考。】    信号名 主板器件 PIN 信号名 主板器件 PIN clr

    2024年02月06日
    浏览(53)
  • FPGA拾忆_(3):调用IP 计数器&BCD计数器

    调用IP计数器: 每来一个cin(进位输入)信号,计数器输出值加一,当计数值为9且cin为1时,输出一个时钟长度的cout(进位输出)信号。 首先采用调用quartus种IP的方式,具体步骤: Tools----IP Catalog: 然后会调出IP目录窗口: 通过搜索counter来添加计数器模块,需要设置的内容

    2024年02月03日
    浏览(56)
  • fpga[1.1]BCD计数器(附源码)

    BCD码也称二进码十进数,可以分为有权码和无权码两个种类。常见的有权BCD码有8421码、2421码、5421码,无权BCD码有余3码、余3循环码、格雷码。 其中,8421BCD码是最基本和最常用的BCD码。其各个bit位的权值分别为8d、4d、2d、1d(5421码、2421码同理)。 BCD码常用于数码管这类经常用

    2023年04月09日
    浏览(44)
  • 【FPGA零基础学习之旅#7】BCD计数器设计

    🎉欢迎来到FPGA专栏~BCD计数器设计 ☆* o(≧▽≦)o *☆ 嗨 ~我是 小夏与酒 🍹 ✨ 博客主页: 小夏与酒的博客 🎈该系列 文章专栏: FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 📜 欢迎大家关注! ❤️ 顶层模块中的BCD模块级联: Verilog实现

    2024年02月08日
    浏览(50)
  • 【FPGA】Verilog:计数器 | 异步计数器 | 同步计数器 | 2位二进制计数器的实现 | 4位十进制计数器的实现

    目录 Ⅰ. 实践说明 0x00 计数器(Counter) 0x01 异步计数器(Asynchronous Counter)

    2024年02月05日
    浏览(57)
  • 任意进制计数器12进制计数数码管显示verilog代码

    名称:任意进制计数器12进制计数数码管显示verilog代码 软件:VIVADO 语言:Verilog 代码功能: 设计一个12进制计数器,计数值00-11需要在数码管上显示, 时钟脉冲通过按键开关设计。 电路的输入信号en进行清零。 本代码可以修改为任意进制计数器,即修改计数控制模块的红框

    2024年02月04日
    浏览(51)
  • 北邮22级信通院数电:Verilog-FPGA(11)第十一周实验(1)用JK触发器实现8421码十进制计数器

    北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分 1.1  JK_8421.v 1.2  JK_ff.v 1.3  debounce.v 二.管脚分配 三.实

    2024年02月05日
    浏览(53)
  • 【30-60s计数器电路设计】数电课设

    这是徐州工程学院2021年的电子工艺实习课程作业之一,我是20级计嵌专业的学生。电路方面的东西并不是我们的主修课程,所以在完成这项作业的过程中遇到了许多困难( 特别是在查不到样板的情况下 )。网上也找到过一位仁兄的案例,不过并没有详细的电路运行原理和操

    2024年02月08日
    浏览(49)
  • 【FPGA】Verilog:时序电路设计 | 二进制计数器 | 计数器 | 分频器 | 时序约束

    前言: 本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载 示例:计数器与分频器   ​​ 功能特性: 采用 Xilinx Artix-7 XC7A35T芯片  配置方式:USB-JTAG/SPI Flash 高达100MHz 的内部时钟速度  存储器:2Mbit SRAM   N25Q064A SPI Flash(样图旧款为N25Q032A) 通用

    2024年02月02日
    浏览(62)
  • 数字电路13-任意进制计数器设计

    因为市面上的进制计数器的种类优先,所以需要特定进制时,只能自己在已有产品的基础上构成需要的特定进制。 十进制计数器也是通过4位二进制计数器,去掉多余状态所得 根据十进制计数器,可得M进制计数器的特点,即状态数、脉冲数、末状态 如前面的十进制计数器,

    2024年02月07日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包