免费招聘网站哪个好,四川华鸿建设有限公司网站,深圳市工程招标网中标公告,网络服务费分录目录 一、实验目的
二、实验要求
三、实验代码
1.design source文件部分代码
2.测试文件代码
四、实验结果及分析
1、引脚锁定
2、仿真波形及分析
#xff08;1#xff09;设计好序列检测器
#xff08;2#xff09;仿真波形#xff08;检测11010#xff09;
3…目录 一、实验目的
二、实验要求
三、实验代码
1.design source文件部分代码
2.测试文件代码
四、实验结果及分析
1、引脚锁定
2、仿真波形及分析
1设计好序列检测器
2仿真波形检测11010
3、下载测试结果及分析检测11011
五、实验心得
1.关于实验设计过程中遇到的困难与解决心得
2.实验完成的心得 一、实验目的
1掌握序列发生和检测的工作原理
2掌握时序电路中状态机的应用
3掌握用Verilog语言实现复杂时序电路的设计过程。 二、实验要求 设计序列发生和检测器
1先实现串行序列发生器的设计产生序列0111010011011010再设计检测器若检测到串行序列11010则输出为“1”否则输出为“0”并对其进行仿真和硬件测试选择实验电路验证功能
2下载程序后可通过一个led灯串行输出序列信号另用五个led灯来观测待检测序列当11010五个全部出现在led上时标识位灯M亮起说明检测到“11010” 的信号即符合设计要求。
产生的序列和检测的序列值仿真验收后老师现场指定11011后完成二次验收。
发生器和检测器最好异步以确保能检测到可以将时钟经非门后再接入检测器。 三、实验代码
1.design source文件部分代码
注为了提高实验报告的美观性在格式符合要求的情况下我对所有的代码进行了高亮处理 timescale 1ns / 1ps
module zhuangtaiji(
//模块输入输出input clk, // 时钟信号input set,input rst_n,output reg result,output reg seq_out, // 序列输出output reg led,//一整个序列输出后输出output reg [7:0]STate);
reg [3:0] state; // 状态寄存器
reg [30:0]fenpin 0;
reg din_vld;
// 定义各种状态
parameter S0 4b0000;
parameter S1 4b0001;
parameter S2 4b0010;
parameter S3 4b0011;
parameter S4 4b0100;
parameter S5 4b0101;
parameter S6 4b0110;
parameter S7 4b0111;
parameter S8 4b1000;
parameter S9 4b1001;
parameter S10 4b1010;
parameter S11 4b1011;
parameter S12 4b1100;
parameter S13 4b1101;
parameter S14 4b1110;
parameter S15 4b1111;parameter ST0 8b000_00000;
parameter ST1 8b001_00001;
parameter ST2 8b010_00011;
parameter ST3 8b011_00110;
parameter ST4 8b100_01101;
parameter ST5 8b101_11011;
initial beginstateS0;STateST0;
end
// 下面是状态转移逻辑
always (posedge clk) beginif(~rst_n)//异步清零beginstateS0;STateST0;endif(set)begin//if(fenpin50000000)begincase(state)S0: beginled 0;state S1;seq_out 1b1;din_vld seq_out;endS1: beginstate S2;seq_out 1b1;din_vld seq_out;endS2: beginstate S3;seq_out 1b0;din_vld seq_out;endS3: beginstate S4;seq_out 1b1;din_vld seq_out;endS4: beginstate S5;seq_out 1b1;din_vld seq_out;endS5: beginstate S6;seq_out 1b0;din_vld seq_out;endS6: beginstate S7;seq_out 1b1;din_vld seq_out;endS7: beginstate S8;seq_out 1b1;din_vld seq_out;endS8: beginstate S9;seq_out 1b0;din_vld seq_out; endS9: beginstate S10;seq_out 1b1;din_vld seq_out;endS10: beginstate S11;seq_out 1b1;din_vld seq_out;endS11: beginstate S12;seq_out 1b0;din_vld seq_out;endS12: beginstate S13;seq_out 1b1;din_vld seq_out;endS13: beginstate S14;seq_out 1b1;din_vld seq_out;endS14: beginstate S15;seq_out 1b0;din_vld seq_out;endS15: beginstate S0;seq_out 1b1;led 1; din_vld seq_out;endendcase
endmodule
2.测试文件代码 timescale 1ns / 1ps
module testbench()
reg clk;
reg rst_n;
reg set;
wire result;
wire led;
wire seq_out;
wire [7:0]STate;
initial beginclk 1b0;rst_n 1b0;set 1b1;#100rst_n 1b1;
endalways #10 clk ~clk; //10MHz
zhuangtaiji U(
.clk(clk),
.rst_n(rst_n),
.set(set),
.result(result),
.led(led),
.seq_out(seq_out),
.STate(STate))
end module
四、实验结果及分析
1、引脚锁定
set_property PACKAGE_PIN R2 [get_ports set]
set_property IOSTANDARD LVCMOS33 [get_ports set]
set_property PACKAGE_PIN T1 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
set_property PACKAGE_PIN W5 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports clk]
set_property PACKAGE_PIN L1 [get_ports seq_out]
set_property IOSTANDARD LVCMOS33 [get_ports seq_out]
set_property PACKAGE_PIN P1 [get_ports led]
set_property IOSTANDARD LVCMOS33 [get_ports led]
set_property PACKAGE_PIN U16 [get_ports result]
set_property IOSTANDARD LVCMOS33 [get_ports result]
2、仿真波形及分析
1设计好序列检测器
首先要理清不同信号输入时检测器应处于的工作状态 及下一时刻的位置故先行绘制出序列检测状态转移图 2仿真波形检测11010 如上图所示在使能端rst_n有效后后出现序列“11010”时输出位result显示了检测结果图中所截选的序列出现了三次“11010”result都进行了输出。验证了设计的正确性。
3、下载测试结果及分析检测11011
由于仿真检测的序列为11010而上板子进行实验时老师指定的序列为11011
首先展示仿真波形 很明显使能端有效后当seq_out序列出现11011时输出位result为1不仅如此由于序列11011011011……的特殊性在同一段序列中待检测序列会相隔很近的出现两次。观察波形可知程序对两次检测序列都完成了检测和输出。
开发板实验结果 第一个led灯显示序列亮灯为1熄灭为0中间五个连续的led等表示的是测试序列的五个连续数字最后一个led表示若检测到待检测序列则进行输出。
如图五个序列显示的是待检测序列11011输出位亮灯功能设计成功
五、实验心得
1.关于实验设计过程中遇到的困难与解决心得
1序列检测器不能连续检测“11011”。
解决方法观察仿真结果发现是因为每次成功检测完序列后检测器直接清零了回看程序是因为没有对检测完“11011”序列后的状态转移做出设计只要补上这一段程序并且正确转移状态就可以连续检测序列并成功输出。
2检测成功的信号不能与 11011 的序列同时输出。
解决方法与原序列相比较不能同时输出所以设计序列 s比原序列晚一个时钟信号输入序列就可以转换为并行输出。在仿真结果中将 s 与 m 放在一起容易观察结果。
2.实验完成的心得
本次实验接触到了一个新的内容——状态机的设计。理解状态机的转换用状态机设计序列检测器原理清晰设计具有条理是一种很棒的设计方法而且对状态转移图的绘制也十分有趣。除了一些代码设计上的问题功能实现方面遇到的困难就是上述的两点好在最后也得到了解决也理解了这块内容为何如此设计。与直白的语言描述相比一些附有技巧性的程序设计不仅大大缩短了代码长度还能更好地完成目标功能每次看见崭新的程序写法都觉得自己学习的路途仍旧遥远。每一次实验的完成都是一段新的学习旅程。之后的实验应该越来越复杂涉及到的内容及功能实现也越来越多但我们应仍保持最初的热情勇于接受挑战、学习知识。
总之状态机的设计实验是一项非常重要的电路设计实践项目在这个实验中我深刻地认识到了状态机对于硬件电路设计中的重要性并且也加深了我对Verilog HDL编程语言的理解。