循环格雷码VHDL源程序

我们知道格雷码计数的特点就是相邻的码字只有一个比特不同,那么我们在设计格雷码计数时找到这个比特取反就是了。找到这个比特的思路: 先将格雷码换算成二进制码,此二进制码中从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;

LCE15P25JK替代IRF6215SPDF传导骚扰CE问题分析
数字货币交易平台Gemini和Flexa达成合作将共同促进数字货币支付的发展
ADI数字步进衰减器可以实现接近直流操作的性能
详解Cypress公司的 Cypress S6BP501A/S6BP502A集成电路
PLC数学运算综合应用
循环格雷码VHDL源程序
MAX197的带液晶显示源程序
人工气候室由中心控制室、试验培养室和人工能源室组成
了解肖特基二极管的具体作用
光纤损耗包括哪些_光纤损耗的分类
爱立信用户分组架构的应用场景
“隐秘拍摄”实战:用树莓派制作一台可穿戴摄像机
SGM8196 荣获 2023 全球电子成就奖“年度创新产品奖”
国产功放哪个牌子好_国产功放排名
Accel Telecom推出首款终极互连车载智能电话设备VOYAGER
12月25日华为Mate9曜石黑开售:低调奢华有内涵,足以和mate9保时捷相媲美!
LCR-6000系列数字电桥的性能特点及功能实现
健身房中应用的智能魔镜带你“智”享健身时刻
特大好消息:ARM Cortex-M0/M3免收授权费了
AM011408LN-P1低噪声放大器模块AMCOM