软件: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
阅读全文
246