格雷码(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 ...
随机推荐
- 7-6 Bandwidth UVA140
没有清空向量导致debug了好久 这题难以下手 不知道怎么dfs 原来是用排序函数. letter[n]=i; id[i]=n++; 用来储存与设置标记十分巧妙 for(;;) { while(s[ ...
- 关于pyinstaller打包程序时设置icon时的一个坑
关于pyinstaller打包程序时设置icon时的一个坑 之前在用pyinstaller打包程序的时候遇到了关于设置图标的一点小问题,无论在后面加--icon 或是-i都出现报错.查了下st ...
- 又是毕业季I
洛谷P1372 又是毕业季I 对于答案a,k*a是最接近n的,即a=n/k(下取整),所以直接输n/k即可. 我的方法是 二分查找 n/k真的没有想到唉. 我找的最大公约数,如果当前的mid对应的个数 ...
- mongoDB的配置以及运行
干嘛的:数据库,nosql(非关系型) 场景:解决大规模数据集合多重数据种类 一.mongoDb安装: 下载地址: https://www.mongodb.com/download-center ...
- HBase 开发环境搭建(Eclipse\MyEclipse + Maven)
写在前面的话 首先, 搭建基于MyEclipse的Hadoop开发环境 相信,能看此博客的朋友,想必是有一定基础的了.我前期写了大量的基础性博文.可以去补下基础. 比如, CentOS图形界面下如何安 ...
- 从零搭建ES搜索服务(一)基本概念及环境搭建
一.前言 本系列文章最终目标是为了快速搭建一个简易可用的搜索服务.方案并不一定是最优,但实现难度较低. 二.背景 近期公司在重构老系统,需求是要求知识库支持全文检索. 我们知道普通的数据库 like ...
- MySQL 5.7.14 net start mysql 服务无法启动
解决方法: 1.mysqld --initialize 初始化data目录 2.重新输入net start mysql命令 补充,服务停止的方法:net stop mysql
- Flutter开发环境(Window)配置及踩坑记录
Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台开发高质量原生 UI 的移动 SDK.Flutter 兼容现有的代码,免费且开源,在全球开发者中广泛被使用. F ...
- BZOJ.4653.[NOI2016]区间(线段树)
BZOJ4653 UOJ222 考虑二分.那么我们可以按区间长度从小到大枚举每个区间,对每个区间可以得到一个可用区间长度范围. 我们要求是否存在一个点被这些区间覆盖至少\(m\)次.这可以用线段树区间 ...
- Table 'performance_schema.session_status' doesn't exist错误,解决办法
Mysql升级到5.7+之后一直出现Table 'performance_schema.session_status' doesn't exist错误,解决办法 1. 进入Mysql的安装目录的bin ...