VHDL棋类竞赛设计(一)

2023-10-26

设计要求:
竞赛计时分两个阶段:每方50秒的规定用时和每方每步8秒的读秒。
1.可分别显示甲乙双方规定用时阶段的已用时间和读秒阶段(8秒)的倒计时;
2.设置两路输入模拟双方落子,在规定用时阶段,一路信号有效时会暂停本方计时并继续对方计时,而在读秒倒计时阶段,它用来暂停本方倒计时,并启动对方8秒倒计时;
3. 若其中一方倒计时到零,则用一路输出表示该方超时负,比赛结束

50秒倒计时模块

VHDL:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
    ENTITY cnt50s IS
      PORT (
        clk  : IN    STD_LOGIC;
        cir  : IN    STD_LOGIC; 
        en   : IN    STD_LOGIC;
        co   : OUT   STD_LOGIC;
        sunit   : OUT   STD_LOGIC_VECTOR (3 DOWNTO 0);
        stent   : OUT   STD_LOGIC_VECTOR (3 DOWNTO 0)
      );
    END cnt50s;

    ARCHITECTURE a OF cnt50s IS
      SIGNAL unit : STD_LOGIC_VECTOR (3 DOWNTO 0);
      SIGNAL tent : STD_LOGIC_VECTOR (3 DOWNTO 0);
    BEGIN
      PROCESS (clk, cir, en)
        BEGIN
          IF (cir = '1') THEN 
              co <= '0';
              unit <= "1001";
              tent <= "0100";
          ELSIF (clk'EVENT AND clk = '1' AND en = '1') THEN 
              unit <= unit - 1;
              IF (unit = "0000") THEN 
                  unit <= "1001";
                  tent <= tent - 1;
                  IF (tent = "0000") THEN
                      co <= '1';
                  END IF;
              END IF;
          END IF;

      END PROCESS;
		    sunit <= unit;
          stent <= tent;
 END a;

Testbench:

LIBRARY ieee;                                               
USE ieee.std_logic_1164.all;                                

ENTITY cnt50s_vhd_tst IS
END cnt50s_vhd_tst;
ARCHITECTURE cnt50s_arch OF cnt50s_vhd_tst IS
-- constants                                                 
-- signals                                                   
SIGNAL cir : STD_LOGIC;
SIGNAL clk : STD_LOGIC;
SIGNAL co : STD_LOGIC;
SIGNAL en : STD_LOGIC;
SIGNAL stent : STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL sunit : STD_LOGIC_VECTOR(3 DOWNTO 0);
COMPONENT cnt50s
	PORT (
	cir : IN STD_LOGIC;
	clk : IN STD_LOGIC;
	co : OUT STD_LOGIC;
	en : IN STD_LOGIC;
	stent : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
	sunit : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
	);
END COMPONENT;
BEGIN
	i1 : cnt50s
	PORT MAP (
-- list connections between master ports and signals
	cir => cir,
	clk => clk,
	co => co,
	en => en,
	stent => stent,
	sunit => sunit
	);
init : PROCESS                                               
-- variable declarations                                     
BEGIN   
cir<='1';wait for 30ns;
cir<='0';                                                  
en<='1';wait for  40ns;       -- code that executes only once                      
WAIT;                                                       
END PROCESS init;                                           
always : PROCESS                                              
                                     
BEGIN      
                                                   
 clk<='0';wait for 10ns;
 clk<='1';wait for 10ns; 
END PROCESS always;                                          
END cnt50s_arch;

在这里插入图片描述

8秒倒计时模块

VHDL:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
    ENTITY cnt8s IS
      PORT (
        clk  : IN    STD_LOGIC;
        cir  : IN    STD_LOGIC; 
        en   : IN    STD_LOGIC;
        co   : OUT   STD_LOGIC;
        sunit   : OUT   STD_LOGIC_VECTOR (3 DOWNTO 0));

    END cnt8s;

    ARCHITECTURE a OF cnt8s IS
      SIGNAL unit : STD_LOGIC_VECTOR (3 DOWNTO 0);
	
    BEGIN
      PROCESS (clk, cir, en)
        BEGIN
          IF (cir = '1') THEN 
              co <= '0';
              unit <= "0111";
          ELSIF (clk'EVENT AND clk = '1' AND en = '1') THEN 
              unit <= unit - 1;
              IF (unit = "0000") THEN 
                   co <= '1';
                  END IF;
              END IF;

      END PROCESS;
		 sunit <= unit;
 END a;

Testbench:

LIBRARY ieee;                                               
USE ieee.std_logic_1164.all;                                

ENTITY cnt8s_vhd_tst IS
END cnt8s_vhd_tst;
ARCHITECTURE cnt8s_arch OF cnt8s_vhd_tst IS
-- constants                                                 
-- signals                                                   
SIGNAL cir : STD_LOGIC;
SIGNAL clk : STD_LOGIC;
SIGNAL co : STD_LOGIC;
SIGNAL en : STD_LOGIC;
SIGNAL sunit : STD_LOGIC_VECTOR(3 DOWNTO 0);
COMPONENT cnt8s
	PORT (
	cir : IN STD_LOGIC;
	clk : IN STD_LOGIC;
	co : OUT STD_LOGIC;
	en : IN STD_LOGIC;
	sunit : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
	);
END COMPONENT;
BEGIN
	i1 : cnt8s
	PORT MAP (
-- list connections between master ports and signals
	cir => cir,
	clk => clk,
	co => co,
	en => en,
	sunit => sunit
	);
init : PROCESS                                               
-- variable declarations                                     
BEGIN                                                        
cir<='1';wait for 30ns;
cir<='0';                                                  
en<='1';wait for  40ns;        -- code that executes only once                      
WAIT;                                                       
END PROCESS init;                                           
always : PROCESS                                              
-- optional sensitivity list                                  
-- (        )                                                 
-- variable declarations                                      
BEGIN                                                         
 clk<='0';wait for 10ns;
 clk<='1';wait for 10ns;                                                      
END PROCESS always;                                          
END cnt8s_arch;

在这里插入图片描述

控制器模块

LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    USE IEEE.STD_LOGIC_UNSIGNED.ALL;
    ENTITY controler IS
      PORT ( 
        count50a, count8a, count50b, count8b  : IN   STD_LOGIC;
        cr, s                             : IN   STD_LOGIC;
        en50a, en8a, en50b, en8b, cr8a, cr8b  : OUT  STD_LOGIC   
      );
    END controler;

    ARCHITECTURE a OF controler IS
    BEGIN
    PROCESS (s, count50a)
      BEGIN
        IF (s = '0') THEN --s=0乙计时
            en50a <= '0'; 
        ELSIF (count50a = '0') THEN 
            en50a <= '1'; 
        ELSE 
            en50a <= '0';
        END IF;
    END PROCESS;

-- process s, count50a, count8a.
    PROCESS (s, count50a, count8a)
    BEGIN
      IF (count8a = '1') THEN 
          en8a <= '0'; -----------
      ELSIF (count50a = '1' AND s ='1') THEN 
          en8a <= '1'; 
      ELSE
          en8a <= '0';
      END IF;
    END PROCESS;

-- process s, count50b.
    PROCESS (s, count50b)
    BEGIN
    IF (s = '1') THEN --s=1 甲计时
        en50b <= '0'; 
    ELSIF (count50b = '0') THEN 
        en50b <= '1'; 
     ELSE
        en50b <= '0';
     END IF;
    END PROCESS;

-- process s, count50b, count8b
    PROCESS (s, count50b, count8b)
    BEGIN
      IF (count8b = '1') THEN 
          en8b <= '0'; 
      ELSIF (count50b = '1' AND s = '0') THEN 
          en8b <= '1'; 
      ELSE  
          en8b <= '0';
      END IF;
    END PROCESS;

-- process s and cr.
    PROCESS (s, cr)
    BEGIN
    IF (cr = '1') THEN 
        cr8a <= '1'; 
    ELSIF (s = '0') THEN 
        cr8a <= '1'; 
    ELSE 
        cr8a <= '0';
    END IF;
    END PROCESS;

-- process s and cr.
    PROCESS (s,cr)
    BEGIN
      IF (cr = '1') THEN 
          cr8b <= '1'; 
      ELSIF (s = '1') THEN 
          cr8b <= '1'; 
      ELSE 
          cr8b <= '0';
      END IF;
    END PROCESS;
END a;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VHDL棋类竞赛设计(一) 的相关文章

  • 【FMC141】基于VITA57.4标准的4通道2.8GSPS 16位DA播放子卡(2片DAC39J84)

    FMC141是一款基于VITA57 4标准的4通道2 8GSPS 2 5GSPS 1 6GSPS采样率16位DA播放FMC子卡 该板卡为FMC 标准 符合VITA57 4与VITA57 1规范 16通道的JESD204B接口通过FMC 连接
  • 如何在 VHDL 中读取文件时消除空格

    我的输入文件中有以下数据可供读取 10101100 11010100 10101100 11010100 11111110 10111001 11111110 10111001 我需要读取每个半字节并将它们写入数组 但由于空格 行的长度会变
  • 硬核 | 从零制作一个激光雷达需要多久?

    编辑 ADS智库 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 硬件交流 技术交流群 本文只做学术分享 如有侵权 联系删文 激光雷达 LiDAR 是激光探测及测距系统的简称 目前广泛应用在无
  • 信号分配在进程中如何工作?

    我了解到信号在遇到表达式时不会立即改变 而是在进程结束时立即改变 在此示例中 signal x y z bit process y begin x lt y z lt not x end process 这个例子是这样说的 如果信号 y 发
  • VHDL门控时钟如何避免

    我收到了避免使用门控时钟的建议 因为它可能会导致松弛和时序限制问题 但我想问一下我可以认为什么是门控时钟 例如 此代码对时钟进行门控 因为 StopCount 对它进行门控 process ModuleCLK begin if rising
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • MINI-UTDE 10 BASE-T 集成控制器

    MINI UTDE 10 BASE T 集成控制器 MINI UTDE 10 BASE T 拥有多达三个本地I O板和远程I OS总线通信 为用户提供了一系列生产单元功能的单一控制点 包括诸如夹头 反馈器和辅助机器等外围生产设备 支持所有主
  • 使用双寄存器方法解决亚稳态问题

    为了解决Verilog中不同时钟域引起的亚稳态 采用双寄存器方法 但据我所知 亚稳态的最终输出尚未确定 输出独立于输入 那么 我的问题是如何保证使用双寄存器方法输出的正确性 Thanks 您不能完全确定您避免了亚稳态 正如您所提到的 亚稳态
  • ESP10B 锁定连接器

    ESP10B 锁定连接器 ESP10B 电机新增内容包括双极型号标准 NEMA 尺寸 17 23 和 34 的步进电机现在包括输出扭矩范围从 61 盎司英寸到 1291 盎司英寸的双极型号 该电机配有带锁定连接器的尾缆 可轻松连接 每转可步
  • 如何在 VHDL 中将整数作为十六进制写入标准输出?

    我可以打印一个integer作为十进制到标准输出 library std use std textio all entity min is end min architecture behav of min is begin process
  • 将库添加到 Vivado 2014.4

    我对 Vivado 和 VHDL 还很陌生 我想要一些关于基本问题的指导 我猜我可以创建自己的库并在我的项目中使用它们 就像使用默认库和基本库一样 eg library IEEE use IEEE std logic 1164 ALL us
  • VHDL - iSIM 输出未初始化,不改变状态

    您好 我是一位 Xilinx 新用户 在如何在测试台中编写激励 模拟方面遇到了麻烦 我的输出 Kd 没有给我任何合理的值 并在移动并始终保持在 1 之前的前几个时钟周期给出 u 不确定我是否写了正确的刺激 但希望有人能帮助我 我的VHDL代
  • 在VHDL中将8位二进制数转换为BCD

    该算法众所周知 您进行 8 次左移 并在每次移位后检查个位 数十位或数百位 每个 4 位 如果它们超过 4 个 则将 3 个添加到该组中 依此类推 这是一个基于流程的解决方案 但不起作用 它会编译 但输出不是我想要的 有什么想法可能是什么问
  • VHDL 中数组的硬件表示

    使用 VHDL 我想要一些寄存器 每个寄存器存储 16 位 所以我发现VHDL有一个内置数组 我想用它来存储iy中每个元素的16位 所以我想知道VHDL是否将此数组映射到实际寄存器 简短的回答是否定的 数组类型不映射到寄存器 长答案 VHD
  • 将 n 位的 std_logic_vector 向右或向左移位

    我有一个向量signal tmp std logic vector 15 downto 0 我必须将它向左或向右移动 n 位 我怎样才能实现这个操作 我想到了串联操作 但我不知道如何使用它 Use the ieee numeric std库
  • vhdl中process语句的顺序执行

    对于vhdl中的process语句 据说process语句内部的执行顺序是连续的 我的问题是 请先看下面的代码 a b和c信号在进程语句中的if语句中是同时还是顺序分配给它们的新值 process clk is begin if risin
  • 在 VHDL 中使用 SB_RGBA_DRV 原语

    我在使用为 Lattice ICE40UP fpga 提供的 SB RGBA DRV 原语时遇到问题 技术库提供了一个 verilog 示例 我可以使用它 但是当我尝试在 VHDL 中使用它时 P R 失败 输出以下消息 错误 非法连接 S
  • VHDL 中的 #define 等价物是什么

    VHDL 中的 define ifdef 和 ifndef 相当于什么 我想使用泛型作为 define 并根据它们更改设计 举一个简单的例子 定义一个字符串泛型并用它来确定时钟是单时钟还是差分时钟 generic something boo
  • VHDL FSM多驱动网Q连接到常量驱动程序,其他驱动程序被忽略,我的代码有什么问题?

    这段代码是一个 FSM 它是一个摩尔机 艾莉莎 P 哈克 Alyssa P Hacker 有一只蜗牛 沿着纸带爬下去 上面有 1 和 0 蜗牛 每当最后两个时都会微笑 它爬过的数字是 01 设计摩尔和米利 蜗牛大脑的 FSM 代码如下所示
  • VHDL:如何声明可变宽度通用[重复]

    这个问题在这里已经有答案了 我想创建一个 VHDL 实体 其中一个泛型可以更改另一个泛型的宽度 entity lfsr n is generic WIDTH integer 32 counter width POLYNOMIAL std l

随机推荐

  • 2023年全国职业院校技能大赛信息安全管理与评估网络安全渗透任务书

    全国职业院校技能大赛 高等职业教育组 信息安全管理与评估 任务书 模块三 网络安全渗透 理论技能与职业素养 比赛时间及注意事项 本阶段比赛时长为180分钟 时间为9 00 12 00 注意事项 1 通过找到正确的flag值来获取得分 fla
  • 爬虫到底是什么呢?爬虫有啥用途呢?

    爬虫技术 爬虫主要用于网络网页 又称网络爬虫和网络蜘蛛 可以自动浏览网络中的信息或一种网络机器人 它们广泛应用于互联网搜索引擎或其他类似的网站 以获取或更新这些网站的内容和检索方法 它们可以自动收集所有可访问的页面内容 以便程序进行下一步处
  • 阿里云OSS 上传文件

    阿里云后台管理 API 集成教程 Key 域名的查询 1 查看上传的文件在哪 a 百度阿里云 进入官网 然后进入管理控制台 b 左侧菜单栏 进入对象存储 OSS c 进入 Bucket 管理页面 点击创建的bucket 名称 d 进入buc
  • windows下串口初步编程(多线程+windows串口)

    环境 win10操作系统 编程环境 Eclipse Cygwin GCC编译器 串口环境 串口调试助手v2 1 虚拟串口助手 Virtual Serial Port Driver 7 2 过程 1 在Eclipse环境下新建一个C 工程 并
  • AI视频换脸faceswap使用经历

    首先在github上面下载faceswap的exe文件 在搜索框搜索faceswap选择第一个 如图所示 点击release之后就能看到exe文件了 点击之后就会出现下载界面 然后选择目录下载它 安装faceswap 最好选择默认目录安装
  • python刷题第八周

    以下是有所收获的题目 第一题 第5章 10 两数之和 30 分 给定一组整数 还有一个目标数 在给定这组整数中找到两个数字 使其和为目标数 如找到 解是唯一的 找不到则显示 no answer 输出的下标按从小到大排序 用一重循环加字典实现
  • 背景建模(对视频处理+python实现+原理+实验报告)

    资源 背景建模 对视频处理 python实现 原理 实验报告 实现效果 依赖库安装及运行描述 运行代码所需的库有两个 numpy和opencv 安装命令 pip install numpy pip install opencv python
  • 你可以不在百度,但不能没有大厂程序员的经验和眼界!

    时刻保持对最新技术的敏感性 并定期更新自己的技能储备 是每个技术人日常必修课 鉴于 BAT 等一线大厂在前沿技术领域的持续研究和大规模投入 直接向他们学习取经 是最为便捷也最为有效的学习方式 你可以不在 BAT 但你不能没有大厂程序员的眼界
  • 可逆矩阵性质总结_矩阵的逆

    一 可逆矩阵与逆矩阵 1 定义 对于矩阵A 如果存在一个矩阵B 使得 则称矩阵A为可逆矩阵 简称A可逆 称B为A的逆矩阵 记为 注意 矩阵A与B的地位是平等的 也可称B为可逆矩阵 例如 设 则AB BA E B为A的逆矩阵 说明 若A是可逆
  • uniapp开发h5,修改原生导航栏,自定义按钮

    关于修改原生导航栏样式的官方文档 添加自定义按钮只有app和h5才可以 pages pages数组中第一项表示应用启动页 参考 https uniapp dcloud io collocation pages path pages bloo
  • Ubuntu 安装 OpenCV4

    参考 ubuntu环境 安装opencv4 ubuntu安装opencv4 jbyyy 的博客 CSDN博客 目录 1 下载OpenCV 2 安装依赖 3 配置 CMake 交叉编译 OpenCV 4 编译 OpenCV 5 系统配置 环境
  • springcloud-alibaba-组件库

    架构选型 技术选型 包格式 公共配置 Springcloud Alibaba 简介 概述 下载 安装nacos 下载 手册 安装 配置 MySQL 数据库 启动集群 防火墙 访问 升级nacos1 x 到 2 x 防火墙 nginx 安装g
  • BES2300x笔记(38) -- 耳机与充电盒数据交互

    哈喽大家好 这是该系列博文的第三十八篇 篇 lt lt 系列博文索引 快速通道 gt gt 一 前言 蓝牙耳机的发展 从一开始的单个挂耳式耳机 到后来的颈挂式耳机 再到现在的TWS耳机 续航 一直都是个大问题 充电盒的诞生 不仅解决了TWS
  • vue + element ui 流文件导出 post or get , 文件下载等 合集

    1 vue element ui 的 get 方法导出数据 let params JSON parse JSON stringify this filterForm let exportUrl 清除为空的字段 for const key i
  • Postman如何做接口测试:如何导入 swagger 接口文档

    在使用 postman 做接口测试过程中 测试工程师会往界面中填入非常多的参数 包括 url 地址 请求方法 消息头和消息体等一系列数据 在请求参数比较多的情况下非常花时间 我们可以使用 postman 的文档导入功能 直接导入 swagg
  • HTML_and_CSS

    HTML知识 1 html概念 html全称HyperText Markup Language 翻译为超文本标记语言 它不是一种编程语言 是一种描述性的标记语言 用于描述超文本内容的显示方式 比如字体 颜色 大小等 超文本 音频 视频 图片
  • MVC 和Spring MVC

    MVC 和Spring MVC 我们都知道常说的MVC指的是 Model View Controller 数据模型 视图 控制器 三层架构指的是 展现层 应用层 数据访问层 但是Spring MVC却不是指的上面的三层架构而是将展现层拆分成
  • 项目开发流程图

    项目开发流程图 抽空总结了下项目开发流程 大多数公司应该都沿用这个流程方式
  • Spire.Office for Java 8.9.5/Spire.Office 8.9.2 .NET

    Spire Office for NET is a combination of Enterprise Level Office NET API offered by E iceblue It includes Spire Doc Spir
  • VHDL棋类竞赛设计(一)

    设计要求 竞赛计时分两个阶段 每方50秒的规定用时和每方每步8秒的读秒 1 可分别显示甲乙双方规定用时阶段的已用时间和读秒阶段 8秒 的倒计时 2 设置两路输入模拟双方落子 在规定用时阶段 一路信号有效时会暂停本方计时并继续对方计时 而在读