名称:序列发生器及序列检测器设计Verilog代码VIVADO仿真
软件:VIVADO
语言:Verilog
代码功能:
时钟同步状态机设计
设计一个序列发生器产生学号后两位数值对应的8421BCD码,再设计一个对应学号后两位数值8421BCD码的序列检测器。
要求仿真实现:
将设计的序列发生器输出作为序列检测器输入。当检测到对应学号的数值时,输出为“1”,否则输出为“0”。
序列检测器输入始终为“1”,测出此时检测器的输出。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
部分代码展示:
1. 工程文件
2. 序列发生器
3. 序列检测器
4. Testbench
将序列发生器输出作为序列检测器的输入
仿真图
可以看到序列发生器输出了00100010,序列检测器检测到后,输出了高电平
5. Testbench2
序列检测器输入始终为1
仿真图
输入一直为1,检测不到00100010,check_out没有输出高电平
`timescale?1ns?/?1ps ////////////////////////////////////////////////////////////////////////////////// //?Company:? //?Engineer:? //? //?Create?Date:?2019/12/21?15:29:36 //?Design?Name:? //?Module?Name:?sequence_generate //?Project?Name:? //?Target?Devices:? //?Tool?Versions:? //?Description:? //? //?Dependencies:? //? //?Revision: //?Revision?0.01?-?File?Created //?Additional?Comments: //? ////////////////////////////////////////////////////////////////////////////////// //学号序列产生模块--2018021407022 //22=00100010 module?sequence_generate( ????input?clk, ????output?reg?sequence_out ????); parameter?Student_ID=8'b00100010;//定义学号BCD码值 reg?[2:0]?count=3'd0; always@(posedge?clk) ????count<=count+3'd1;//count循环累加0~7循环 //输出序列 always@(posedge?clk) ????case(count)//由高位到低位输出 ????????3'd0:sequence_out<=Student_ID[7]; ????????3'd1:sequence_out<=Student_ID[6]; ????????3'd2:sequence_out<=Student_ID[5]; ????????3'd3:sequence_out<=Student_ID[4]; ????????3'd4:sequence_out<=Student_ID[3]; ????????3'd5:sequence_out<=Student_ID[2]; ????????3'd6:sequence_out<=Student_ID[1];
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=880
305