格雷码计数器

格雷码计数器

题目描述
实现4bit位宽的格雷码计数器。
电路的接口如下图所示
在这里插入图片描述
题目解读
格雷码计数器,分为三部分进行设计,格雷码转二进制、加法器、二进制转格雷码。

格雷码转二进制将格雷码转换为二进制,并将值输出用于加法器进行加法运算,然后将加法运算结果通过二进制转格雷码转换为格雷码,最后将格雷码进行输出,同时将结果输出到格雷码转二进制作为输入,形成一个计数功能。

格雷码转二进制码的基本思路:

格雷码转二进制是从左边第二位起,将每位与左边一位二进制码的值异或,作为该位二进制码后的值(最左边一位依然不变)。

二进制码转格雷码的基本思路:

从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变。

`timescale 1ns/1nsmodule gray_counter(input   clk,input   rst_n,output  reg [3:0] gray_out
);
//格雷码转二进制
reg  [3:0] bin_out;
wire [3:0] gray_wire;always @(posedge clk or negedge rst_n)beginif(rst_n == 1'b0) beginbin_out <= 4'b0;endelse beginbin_out[3] = gray_wire[3];bin_out[2] = gray_wire[2]^bin_out[3];bin_out[1] = gray_wire[1]^bin_out[2];bin_out[0] = gray_wire[0]^bin_out[1];end 
end
//二进制加一
reg [3:0] bin_add_wire;
always @(posedge clk or negedge rst_n)beginif(rst_n == 1'b0) beginbin_add_wire <= 4'b0;endelse beginbin_add_wire <= bin_out + 1'b1;end
end
//二进制转格雷码
assign gray_wire = (bin_add_wire >> 1) ^ bin_add_wire;always @(posedge clk or negedge rst_n)beginif(rst_n == 1'b0) begingray_out <= 4'b0;endelse begingray_out <= gray_wire;end
end
endmodule

方法二

`timescale 1ns/1nsmodule gray_counter(input   clk,input   rst_n,output  reg [3:0] gray_out
);reg[4:0] count;reg rev;always@(posedge clk or negedge rst_n)if(!rst_n)count <= 5'b0;elsecount <= count + 1'b1;always@(*)if(!rst_n)gray_out = 4'b0;elsegray_out = count[4:1] ^ (count[4:1] >> 1);endmodule

方法三

`timescale 1ns/1nsmodule gray_counter(input   clk,input   rst_n,output  wire [3:0] gray_out
);//使用Moore状态机实现parameter   s0 =8'b0000_0000,s1 = 8'b0001_0001,s2 = 8'b0011_0011,s3 = 8'b0010_0010,s4 = 8'b0110_0110,s5 = 8'b0111_0111,s6 = 8'b0101_0101,s7 = 8'b0100_0100,s8 = 8'b1100_1100,s9 = 8'b1101_1101,s10 = 8'b1111_1111,s11 = 8'b1110_1110,s12 = 8'b1010_1010,s13 = 8'b1011_1011,s14 = 8'b1001_1001,s15 = 8'b1000_1000,ss0 = 8'b0000_0001,ss1 = 8'b0001_0011,ss2 = 8'b0011_0010,ss3 = 8'b0010_0110,ss4 = 8'b0110_0111,ss5 = 8'b0111_0101,ss6 = 8'b0101_0100,ss7 = 8'b0100_1100,ss8 = 8'b1100_1101,ss9 = 8'b1101_1111,ss10 = 8'b1111_1110,ss11 = 8'b1110_1010,ss12 = 8'b1010_1011,ss13 = 8'b1011_1001,ss14 = 8'b1001_1000,ss15 = 8'b1000_0000;reg [7:0] s,nx_s;//state,next_statereg        the_count_is_crazy;always@(posedge clk or negedge rst_n)beginif(rst_n == 0)s <= s0;elses <= nx_s;endalways@(*)begincase(s)s0:nx_s = ss0;ss0:nx_s = s1;s1:nx_s = ss1;ss1:nx_s = s2;s2:nx_s = ss2;ss2:nx_s = s3;s3:nx_s = ss3;ss3:nx_s = s4;s4:nx_s = ss4;ss4:nx_s = s5;s5:nx_s = ss5;ss5:nx_s = s6;s6:nx_s = ss6;ss6:nx_s = s7;s7:nx_s = ss7;ss7:nx_s = s8;s8:nx_s = ss8;ss8:nx_s = s9;s9:nx_s = ss9;ss9:nx_s = s10;s10:nx_s = ss10;ss10:nx_s = s11;s11:nx_s = ss11;ss11:nx_s = s12;s12:nx_s = ss12;ss12:nx_s = s13;s13:nx_s = ss13;ss13:nx_s = s14;s14:nx_s = ss14;ss14:nx_s = s15;s15:nx_s = ss15;ss15:nx_s = s0;endcaseendassign gray_out = s[7:4];
endmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/243035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这些贷款冷知识你知道多少?

贷款是一门学问&#xff0c;说起来简单&#xff0c;但是实际上还是比较深奥的&#xff0c;有些信贷经理虽然长期在信贷行业摸爬滚打&#xff0c;但对于一些知识不一定了解&#xff0c;今天我们就来看看贷款行业的一些冷知识&#xff0c;看看你知道多少。什么叫子弹式贷款&#…

拉格朗日插值拟合

pre define typedef struct Operators {std::vector<float> Operatos;}Operators;// 定义一个点 class PointF { public:PointF(){X Y 0.0f;}PointF(IN const PointF &point){X point.X;Y point.Y;}PointF(IN float x,IN float y){X x;Y y;}PointF operator(IN…

多bit MUX同步器

多bit MUX同步器 题目描述 在data_en为高期间,data_in将保持不变,data_en为高至少保持3个B时钟周期。表明,当data_en为高时,可将数据进行同步。 本题中data_in端数据变化频率很低,相邻两个数据间的变化,至少间隔10个B时钟周期。 电路的接口如下图所示。端口说明如下表所…

鲶鱼效应:为什么要适当的贷款?

说到鲶鱼效应&#xff0c;估计大家并不陌生。挪威人喜欢吃沙丁鱼&#xff0c;尤其是活鱼。市场上活鱼的价格要比死鱼高许多。所以渔民总是想方设法的让沙丁鱼活着回到渔港。可是虽然经过种种努力&#xff0c;绝大部分沙丁鱼还是在中途因窒息而死亡。但却有一条渔船总能让大部分…

哪些行为会影响个人征信?

征信大家都知道它的重要性&#xff0c;可是很多人并不知道什么行为会影响个人征信。很多不良征信都是在不经意之间造成的。个人征信报告样式虽然个人征信有时候无意造成不良记录&#xff0c;但是金融机构看征信只看结果&#xff0c;不看你的过程&#xff0c;一旦出现不良征信&a…

脉冲同步电路

脉冲同步电路 题目解析 从A时钟域提取一个单时钟周期宽度脉冲,然后在新的时钟域B建立另一个单时钟宽度的脉冲。 A时钟域的频率是B时钟域的10倍;A时钟域脉冲之间的间隔很大,无需考虑脉冲间隔太小的问题。 电路的接口如下图所示。data_in是脉冲输入信号,data_out是新的脉冲信…

贷款审批到底会考核哪些内容?

经常贷款的朋友应该知道&#xff0c;贷款看着简单&#xff0c;其实要经过层层的审核程序&#xff0c;有时候明明觉得自己的条件还不错&#xff0c;可是贷款审批结果要么是直接被拒贷&#xff0c;要么就是额度很低。那贷款到底会审核哪些内容呢&#xff1f;下面我们就来看看。以…

可置位计数器

可置位计数器 题目描述 请编写一个十六进制计数器模块&#xff0c;计数器输出信号递增每次到达0&#xff0c;给出指示信号zero&#xff0c;当置位信号set 有效时&#xff0c;将当前输出置为输入的数值set_num。 模块的接口信号图如下&#xff1a; timescale 1ns/1nsmodule c…

信用卡有哪些好处?

信用卡现在已经很普遍&#xff0c;人手几张信用卡很常见&#xff0c;但是也有很多朋友对信用卡不感冒&#xff0c;认为办理信用卡之后会产生不理智的消费行为。但是信用卡的这些好处你知道吗&#xff1f;1、没钱也能当土豪没钱想消费怎么办&#xff1f;是去抢还是去借&#xff…

信用卡多还钱了怎么办?

我有一个朋友&#xff0c;前段时间还信用卡&#xff0c;他自己不记得消费了多少&#xff0c;也没有及时去查账单&#xff0c;然后就随便还款了5000元进去。可后来他查了自己的账单&#xff0c;发现当期的账单只有2000多元&#xff0c;多出的的2000多元他以为可以像储蓄卡那样可…

加减计数器

加减计数器 题目描述 请编写一个十进制计数器模块,当mode信号为1,计数器输出信号递增,当mode信号为0,计数器输出信号递减。每次到达0,给出指示信号zero。 模块的接口信号图如下: `timescale 1ns/1nsmodule count_module(input clk,input rst_n,input mode,output reg …

逾期后还能消除不良记录吗?

逾期了还能消除吗&#xff1f;估计这个问题有很多逾期的朋友都是比较关心的。逾期看着是小事&#xff0c;但是到了关键时刻逾期就是一件大事&#xff0c;比如申请房贷&#xff0c;申请车贷&#xff0c;申请贷款等&#xff0c;无一不是要考核个人的征信记录&#xff0c;如果有逾…

单端口RAM

单端口RAM 题目描述 设计一个单端口RAM,它有: 写接口,读接口,地址接口,时钟接口和复位;存储宽度是4位,深度128。注意rst为低电平复位 信号示意图: 单口RAM的实现原理 建立一个reg的数组,将数据存储进来,进行的是读、写互不干扰的读写机制,即要么读要么写。这个时…

什么叫黑名单?黑名单还能贷款吗?

黑户&#xff0c;也就是大家经常听说的黑名单。有过贷款经历的朋友估计都会谈“黑”色变&#xff0c;因为一旦你“涉黑”&#xff0c;你的贷款基本就没戏了。那什么是黑名单&#xff1f;是不是个人征信上写一个大大的“黑”字呢&#xff1f;其实所谓的黑名单只是一种通俗的说法…

内部爆料:信用卡被盗刷,如何把风险降到最低?

信用卡在身上&#xff0c;可是手机却收到了异地的交易信息。相信很多人的第一反应是卡被盗刷了&#xff0c;赶紧打电话挂失&#xff0c;其实这并不是最好的选择。根据银行人提供的内部消息&#xff0c;如果信用卡被盗刷&#xff0c;这样做会把风险降到最低&#xff1a;步骤一&a…

RAM的简单实现

RAM的简单实现 题目描述 实现一个深度为8,位宽为4bit的双端口RAM,数据全部初始化为0000。具有两组端口,分别用于读数据和写数据,读写操作可以同时进行。当读数据指示信号read_en有效时,通过读地址信号read_addr读取相应位置的数据read_data,并输出;当写数据指示信号wri…

没有工作怎么申请贷款?

大家都知道&#xff0c;贷款是需要考核借款人的职业&#xff0c;要么你是上班族&#xff0c;有稳定的工作&#xff0c; 要么你是企业主&#xff0c;有自己的生意。那对于那些既没有工作&#xff0c;也没有生意的人来说&#xff0c;想贷款怎么办呢&#xff1f;1、实物抵押贷款如…

买房为什么要少出首付,多贷款?

买房到底是全款买房好呢&#xff0c;还是贷款买房好呢&#xff1f;最近有一个朋友买了套房子&#xff0c;到处在借钱。我问他&#xff0c;你首付不够吗&#xff1f;这朋友说&#xff0c;如果按三成首付算的话&#xff0c;早就够&#xff0c;但是不想贷款&#xff0c;白白给银行…

Johnson Counter

Johnson Counter 题目描述 请用Verilog实现4位约翰逊计数器&#xff08;扭环形计数器&#xff09;&#xff0c;计数器的循环状态如下。 电路的接口如下图所示。 timescale 1ns/1nsmodule JC_counter(input clk ,input rst_n,output reg [3:0…

Using Artica Squid Open Source Project to Build Powerful and Safe but Simple to Use Proxy

Looking for a pre-installed GUI based Proxy for a while and found Artica recently. The feature is pretty attractive and GUI interface looks cool. What is Artica? “Artica Proxy is an appliance that claim to manage Squid-cache proxy with all features that …