格雷码计数器

334 阅读2分钟

1 moore 与mealy摩尔型和米勒型状态机:

Moore有限状态机的输出只与当前状态有关,与输入信号的当前值无关。从时序上看,Moore状态机属于同步输出状态机,Moore有限状态机的特点是将输入与输出信号隔离开来。

Mealy型状态机的输出是当前状态和输入的函数,随输入变化而随时变化。从时序上看,Mealy状态机属于异步输出,它不依赖于时钟。

2 程序下载到FPGA的方式有几种,JTAG有几根线。

JTAG: 下载sof,掉电丢失。 可以将sof文件转为jic文件,通过外部存储器EPCSx配置,掉电不丢失。

AS:下载pof文件,配置EPCSx,掉电不丢失。

PS:由外部计算机或控制器 控制配置过程。

JTAG有以下几根线:TCK,TMS,TDI,TDO,TRST五根线

TCK:测试时钟输入,TRST测试复位输入,TMS测试模式选择,TDI测试数据输入,TDO测试数据输出。

格雷码计数器

格雷码转二进制 二进制计数加一 二进制转格雷码

输出格雷码


module gray_counter(
   input   clk,
   input   rst_n,

   output  reg [3:0] gray_out
);
    //计数器两个周期变一次
    
    
    //格雷码转二进制,加法器加法运算,加法运算结果通过二进制转为格雷码。
    //最后将格雷码进行输出,通过将输出结果输出到格雷码转二进制作为输入,形成计数。
    
    //格雷码 转二进制,最高位不变,格雷码次高位与二进制前一位做异或。
    //二进制转格雷码 最高位不变,次高位为前一位做异或。
    
    reg  [3:0]bin_add_wire;
    
    //格雷码转二进制
    reg [3:0]bin_out;
    wire [3:0]grey_wire;
    
    always@(posedge clk or negedge rst_n)
        if(!rst_n)
            bin_out <= 4'b0;
        else begin
            bin_out[3] = grey_wire[3];
            bin_out[2] = grey_wire[2]^bin_out[3];
            bin_out[1] = grey_wire[1]^bin_out[2];
            bin_out[0] = grey_wire[0]^bin_out[1];     
        end
    //二进制加一
    
    always @(posedge clk or negedge rst_n)begin
   if(rst_n == 1'b0) begin
      bin_add_wire <= 4'b0;
   end
   else begin
      bin_add_wire <= bin_out + 1'b1;
   end
end
    //二进制转格雷码
    assign grey_wire = (bin_add_wire >> 1) ^ bin_add_wire;
 
    
    
   always @(posedge clk or negedge rst_n)begin
   if(rst_n == 1'b0) begin
      gray_out <= 4'b0;
   end
   else begin
      gray_out <= grey_wire;
   end
end
    
    
    
    
    
    
    
    
    
    
    
endmodule
```