- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
西南科技大学
实验报告
课程名称: 基于FPGA的现代数字系统设计
实验名称:用状态机实现序列检测器的设计
姓 名:
学 号:
班 级: 通信1301
指导教师: 刘桂华
西南科技大学信息工程学院制用状态机实现序列检测器的设计
实验目的
实验总体原理说明
序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出A,否则输出b。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。本实验中对序列111000进行检测
实验模块组成
Clk
Reset
由于需要用按键K2作为时钟输入,为保证实验效果,调用实验二中应用的消抖模块,对时钟clk输入信号进行消抖。
模块具体功能
xulie.v):
功能描述采取异步复位,在时钟控制下,将并行输入数据din6[5:0]din[5],din[4],din[3],din[2],din[1],din[0]的顺序输出至串行检测模块的输入端口din。
输入端口:
clk-----系统时钟,由按键K2通过消抖模块后提供
din6-----6bits输入数据,需在时钟控制下,串行输出
reset----系统复位信号,当reset=1’b1时,系统输出复位,否则系统正常工作
输出端口:
din----------1bit输出信号
串行检测模块(schk.v)
功能描述:检测序列111000,若检测到,则AB输出1010,否则输出1011。
输入信号:
DIN-----1bit的串行输入数据
CLK-----同步输入时钟
CLR ------异步清零信号,当CLR=1,系统输出置0,否则,系统正常工作
输出信号:
AB--------4bits数据,如果系统检测到6’b100101的串行输入,AB=4’b1010,否则,AB=4’b1011
数码管显示模块
显示输入端口
AB--------4 bits数据
输出端口
Led7--------7 bits数据,用于控制数码管显示
三个状态真值表如下
输入(4bits) 输出(7bits) 显示内容 4’b1010 7’b 0001000 a 4’b1011 7’b0000011 b 4’b0000 7’b1000000 0
实验步骤
构建一个工程名为XULIEQI的工程
设计输入及综合与仿真
并行数据转串行数据模块(xulie.v)
代码编写module xulie(clk,din6,reset,din);
input clk;
input [5:0] din6;
input reset;
output din;
parameter
s0 = 3b000,
s1 = 3b001,
s2 = 3b010,
s3 = 3b011,
s4 = 3b100,
s5 = 3b101,
s6 = 3b110;
reg [2:0] cur_state,next_state;
reg din;
always @ (posedge clk or posedge reset )
if (reset)
cur_state = s0;
else
cur_state = next_state;
always @ (cur_state or din6 or din)
begin
case (cur_state)
s0 : begin
din = din6[5];
next_state = s1;
end
s1 : begin
din = din6[4];
next_state = s2;
end
s2 : begin
din = din6[3];
next_state = s3;
end
s3 : begin
din = din6[2];
next_state = s4;
end
s4 : begin
din = din6[1];
next_state = s5;
文档评论(0)