老古开发网首页
导航:老古开发网首页文章索引索引第2441页文章分类EDA/IC设计第23页→[格雷码计数器的设计思路VHDL实例]
| -文章搜索 - 最新文章 - |

第2586篇:格雷码计数器的设计思路VHDL实例

发布时间:2006年7月28日 点击次数:2634
来源:   作者:
 
我们知道格雷码计数的特点就是相邻的码字只有一个比特不同,那么我们在设计格雷码计数时找到这个比特取反就是了。找到这个比特的思路:
      先将格雷码换算成二进制码,此二进制码中从LSB到MSB第一个为''0''的比特对应的格雷码位置即为所需位置,如果全''1''则MSB的位置为所需位置。
      下面以循环格雷码为例,给出一个VHDL程序。
      Library ieee;
      Use ieee.std_logic_1164.all;
      Entity Demo is Port(
      clock :in std_logic;
      q : out std_logic_vector(3 downto 0)); --vector的长度随用户而定,这里只是一个示例。
      End Demo;
      Architecture myFavor of Demo is
      Function NxG(argv :std_logic_vector) return std_logic_vector is
      --此函数完成输入一个格雷码返回下一个数的格雷码
      alias GV :std_logic_vector(1 to argv''length) is argv;
      variable BV,GC :std_logic_vector(1 to argv''length);
      Begin
      BV(1) := GV(1);
      for i in 2 to argv''length loop
      BV(i) := GV(i) xor BV(i - 1);
      end loop;
      GC := GV;
      for i in argv''length downto 1 loop
      if BV(i) = ''0'' or i = 1 then
      GC(i) := not GC(i);
      exit;
      end if;
      end loop;
      return GC;
      End NxG;
      Signal GC :std_logic_vector(3 downto 0);
      Begin
      Process(clock) begin
      if rising_edge(clock) then
      GC <= NxG(GC);
      end if;
      End process;
      q <= GC;
      End myFavor;

欢迎进入老古论坛进行讨论
[EDA/IC设计] 相关文章:
代码规范-状态机编码选择依据VHDL实例
简介:
经常会看到在状态机设计中别人使用各种不同的编码方式,那么一般情况下,这种编码方式的选择依据是什么? 我们知道,在数字逻辑设计中最常用的有三种编码方式:二进制,格雷码 Gray,独热编码One-hot One hot 编码使用一组码元,每一个码元仅有1bit有效,例如 IDLE = 0001, &......

8*8位的fifo数据缓冲器的vhdl源程序VHDL实例
半整数分频的VHDL程序VHDL实例
[转载]透视 FPGA 的安全性
[转载]FPGA器件在嵌入式系统中的配置方式的探讨
 
下一个:[EDA/IC设计]介绍状态机的一种书写方式VHDL实例
简介:
借用zqadam的逻辑改的: `define S1 0 `define S2 1 `define S3 2 `define S4 3 `define S5 4 &n......

上一个:[EDA/IC设计]用VHDL/VerilogHD语言开发PLD/FPGA的完整流程VHDL实例

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:30分钟 执行时间:78毫秒