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
```