软件:Quartus
语言:Verilog
代码功能:
(1)设计一个序列检测器,每当检测到输入010码时,对应最后一个0,电路输出为1,否则输出为0;
(2)使用 Quartus Prime17.1软件开发平台,用 Veriloghdl语言编写代码实现;
(3)序列检测器的顶层模块要求用 sqntl dtctr top命名,输入输出见以下代码定义:
(4)序列检测器用周期为15的m序列发生器代码生成伪随机序列作为输入信号,m序列生成多项式:f(x)=x4+x+1;
(5)序列检测器模块要求有限状态机方案设计;
(6)编写testbench代码,用Modelsim进行仿真。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
顶层
M序列
序列检测
状态图
5. Testbench
6. 仿真图
顶层仿真
M序列仿真
序列检测仿真
部分代码展示:
//序列检测模块 module sqntl_dtctr( input X,//序列发生器信号 output Z,//序列检测器输出 output [1:0] Q,//触发器状态 input CLK, input n_RST ); reg [1:0] cur_state; reg [1:0] nxt_state; parameter s_idle=2'd0; parameter s_0=2'd1; parameter s_01=2'd2; parameter s_010=2'd3; //触发器 always@(posedge CLK or negedge n_RST) if(~n_RST) cur_state<=s_idle; else cur_state<=nxt_state; always@(*) case(cur_state) s_idle: if(X==0) nxt_state=s_0; else nxt_state=s_idle; s_0: if(X==0) nxt_state=s_0; else nxt_state=s_01; s_01: if(X==0) nxt_state=s_010; else nxt_state=s_idle; s_010: if(X==0) nxt_state=s_0; else nxt_state=s_01; default:; endcase
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=932
阅读全文
337