格雷码(Gray code)仿真
作者:桂。
时间:2018-05-12 16:25:02
链接:http://www.cnblogs.com/xingshansi/p/9029081.html
前言
FIFO中的计数用的是格雷码,简要记录格雷码的分析思路。
一、格雷码与8421码对应关系

通过真值表分析,可以得出:

即格雷码是:8421码从最右边起,依次与左边一位异或,最左边一位不变,对应实现语言:
GrayCount_out <= {BinaryCount[COUNTER_WIDTH-],BinaryCount[COUNTER_WIDTH-:] ^ BinaryCount[COUNTER_WIDTH-:]};
另外:

二、仿真实现
Graycounter.v:
`timescale 1ns/1ps module GrayCounter(Enable_in, Clear_in, Clk, GrayCount_out);
parameter COUNTER_WIDTH = ; output reg [COUNTER_WIDTH-:] GrayCount_out; //'Gray' code count output. input wire Enable_in; //Count enable.
input wire Clear_in; //Count reset.
input wire Clk; /////////Internal connections & variables///////
reg [COUNTER_WIDTH-:] BinaryCount; /////////Code/////////////////////// always @ (posedge Clk)
begin
if (Clear_in) begin
BinaryCount <= {COUNTER_WIDTH{'b 0}} + 1; //Gray count begins @ '' with
GrayCount_out <= {COUNTER_WIDTH{'b 0}}; // first 'Enable_in'.
end
else if (Enable_in) begin
BinaryCount <= BinaryCount + ;
GrayCount_out <= {BinaryCount[COUNTER_WIDTH-],
BinaryCount[COUNTER_WIDTH-:] ^ BinaryCount[COUNTER_WIDTH-:]};
end
end endmodule
testbench:
`timescale 1ns / 1ps
module graycounter_tb;
parameter COUNTER_WIDTH = ; logic clk,rst;
logic clr,en;
logic [COUNTER_WIDTH-:] GrayCount_out;
initial
begin
clk = ;
rst = ;
#
rst = ;
clr <= ;
en <= ;
#
clr <= ;
en <= ;
#
$stop;
end logic [:] counter; always # clk = ~clk; always @(posedge clk)
begin
if(rst | clr)
begin
counter <= ;
clr <= ;
en <= ;
end
else
begin
counter <= counter + 'b1;
end
end
//main
GrayCounter gray_inst(
.Enable_in(en),
.Clear_in(clr),
.Clk(clk),
.GrayCount_out(GrayCount_out)
); endmodule

电路图看出:

主要是LUT、D触发器、DS触发器,原语实现也较为方便。
格雷码(Gray code)仿真的更多相关文章
- 格雷码Gray Code详解
格雷码简介 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码.格 ...
- [Swift]LeetCode89. 格雷编码 | Gray Code
The gray code is a binary numeral system where two successive values differ in only one bit. Given a ...
- 用硬件(Verilog)实现二进制码和格雷码的转换
格雷码(Gray code)是1880年由法国工程师Jean-Maurice-Emlle Baudot发明的一种编码,是一种绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环. ...
- 产生n位元的所有格雷码
原文链接:http://blog.csdn.net/beiyeqingteng/article/details/7044471 问题:产生n位元的所有格雷码. 格雷码(Gray Code)是一个数列集 ...
- 解题(GeLeiMa -生成格雷码)
题目描述 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码. 给定一个整数n,请返回n位的格雷码 ...
- Gray Code——陈瑶师姐面试时候要用回溯算法
The gray code is a binary numeral system where two successive values differ in only one bit. Given a ...
- 构建n位元的格雷码
二进制格雷码的生成 1.什么是格雷码 Gray Code是一个数列集合,每个数使用二进制来表示,假设使用n位元来表示每个数字,那么任两个数之间只有一个位元值不同.log2(16)=4 例如: 生成4位 ...
- [LeetCode] Gray Code 格雷码
The gray code is a binary numeral system where two successive values differ in only one bit. Given a ...
- LeetCode:Gray Code(格雷码)
题目链接 The gray code is a binary numeral system where two successive values differ in only one bit. Gi ...
随机推荐
- mysql_union操作符
MySQL UNION操作符 union操作符合并两个或多个 SELECT 语句的结果集. union:去重 union all:不去重 UNION 结果集中的列名总是等于 UNION 中第一个 S ...
- HDU3342Legal or Not 拓扑排序
有向图判断是否成环 如果是环输出NO 只要入度为0的点的个数 等于 总的点的个数则无环 #include<bits/stdc++.h> using namespace std; //in ...
- P、NP、NPC、NPH问题的区别和联系
时间复杂度 时间复杂度描述了当输入规模变大时,程序运行时间的变化程度,通常使用\(O\)来表示.比如单层循环的时间复杂度为\(O(n)\),也就是说程序运行的时间随着输入规模的增大线性增长,两层循环的 ...
- RocketMQ msgId生成算法
当我们用RocketMQ发送信息的时候通常都会返回如下信息: SendResult [sendStatus=SEND_OK, msgId=0A42333A0DC818B4AAC246C290FD000 ...
- C#并行编程(1):理解并行
什么是并行 并行是指两个或者多个事件在同一时刻发生. 在程序运行中,并行指多个CPU核心同时执行不同的任务:对于单核心CPU,严格来说是没有程序并行的.并行是为了提高任务执行效率,更快的获取结果. 与 ...
- Mybatis Generator xml格式配置
Mybatis Generator可以使用Maven方式和Java方法,使用Maven这里是配置文件: <?xml version="1.0" encoding=" ...
- javascript高级部分
回顾 回顾: 整体: - HTML - CSS - JavaScript - 基本数据类型 - for,while.. - DOM - obj = document.getElementById('. ...
- Python3练习题系列(01)
2018-06-13 题目: 根据用户回答做出相应的判断,完成一个“回答-判断”的小游戏 Python3知识点: if, else, elif 实例代码: print("You enter ...
- JavaScript_作用域(2017-03-16)
这里写的还不够清楚. 建议去看:王福朋 的博客的加深理解. 深入理解javascript原型和闭包(8)——简述[执行上下文]上 深入理解javascript原型和闭包(9)——简述[执行上下文]下 ...
- fatal error C1083: 无法打开编译器生成的文件:“../../build/vs71/release/lib_json\json_value.asm”: No such file or directory
修改生成静态库文件的工程的属性:路径为:菜单---项目--属性---配置属性---c/c++---输出文件---汇编程序输出:无列表