首页 vhdl 序列检测

vhdl 序列检测

举报
开通vip

vhdl 序列检测目录 摘要:    1 关键词:    1 方案说明    1 一、设计任务与要求    2 二、总体框图    2 2.1 总体框图    2 2.2【图2.1】模块说明:    2 2.2.1序列发生模块:    2 2.2.2序列检测模块    3 2.2.3二进制到十进制译码模块    3 2.2.4显示模块    3 2.2.5LED检测状态指示    3 三、选择器件    3 四、功能模块    3 4.1复位信号说明    3 4.2按键消抖模块    4 4.3分频模块1    5 4.4分频模...

vhdl 序列检测
目录 摘要:    1 关键词:    1 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 说明    1 一、设计任务与要求    2 二、总体框图    2 2.1 总体框图    2 2.2【图2.1】模块说明:    2 2.2.1序列发生模块:    2 2.2.2序列 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 模块    3 2.2.3二进制到十进制译码模块    3 2.2.4显示模块    3 2.2.5LED检测状态指示    3 三、选择器件    3 四、功能模块    3 4.1复位信号说明    3 4.2按键消抖模块    4 4.3分频模块1    5 4.4分频模块2    6 4.5序列发生模块    8 4.6序列检测模块    10 4.7译码模块    12 4.8动态扫描显示模块:    13 4.9 VGA功能选择    17 五、整体设计电路    18 5.1整体连接电路图:    18 5.2整体仿真图:    19 5.3管脚分配图:    20 六、实验箱运行结果    21 6.1输入/输出硬件说明:    21 6.2复位后开始检测前    23 6.3输入正确序列    24 6.4输入错误序列    25 七、结论    25 参考文献    26 附录    27 题外话    27 封底    28 摘要: 序列发生模块采用八位串行输入,输入完毕后检测模块进行序列检测。检测结果由底板红色LED指示。数码管显示实际输入序列和正确序列的十进制形式。 关键词: 序列检测;序列发生;数码管显示;译码 方案说明 根据设计题目,通过和指导老师交流,最终确定课题框架:序列发生模块采用串行输入,检测模块采用状态机转换法检测,LED指示检测状态,数码管显示实际输入序列和正确序列的十进制表示。 一、设计任务与要求 本次课程设计要求利用状态机设计一个八位序列检测器,检测序列(低位在前)为“11010011”。在数码管上显示正确序列的十进制状态(百位靠左,利用数码管的最右面三位显示)。用发光二极管显示检测结果是否正确(正确发光二极管亮,错误发光二极管不亮)。 为了给检测器创造检测条件,设计一个序列发生器。序列发生器,采用八位串行输入(低位先输入)。输入完毕后,在数码管上显示实际输入序列的十进制状态(百位靠左,利用数码管的次三位显示)并随着时钟节奏向检测器同步发送序列。 二、总体框图 2.1 总体框图 【图2.1】 2.2【图2.1】模块说明: 2.2.1序列发生模块: 序列发生模块采用八位串行输入(上升沿驱动),输入完八位序列后自动结束输入,状态指示端输出高电平,并且随着时钟信号上升沿节奏开始发送序列并在数码管上显示实际输入序列。 2.2.2序列检测模块 序列检测模块采用状态机的方式进行。当序列检测模块的状态端收到高电平信号以后,会和序列发送器在同一时钟信号上升沿节拍下分位检测输入序列是否和原定序列相同。八个时钟上升沿以后输出检测结果。本模块只做一次序列检测,如果要重新检测请按复位键。 2.2.3二进制到十进制译码模块 采用分位取模的方式把一个八位二进制数分别取出它的百位、十位、个位并把结果输送到显示模块。 2.2.4显示模块 显示模块用于产生数码管动态扫描时的位选信号和同步的段选信号。 2.2.5LED检测状态指示 用底板上一个红色LED显示检测结果(亮为正确检测结果,灭为错误检测结果)。 三、选择器件 FPGA芯片和它的附属电路、JTAG下载器、thinkpad笔记本电脑、核心板上50MHZ时钟信号、核心板上的两个拨码开关、核心板上两个LED灯;底板上一个LED灯、底板上时钟信号发生单元、底板上6个数码管、导线两条。 四、功能模块 4.1复位信号说明 复位信号为低电平有效。所有有复位信号输入端的模块都采用复位信号有效法,进行内部信号量、变量,外部信号量的赋初值。序列发生模块复位后,实际序列输入值显示“000”,缓存区清零,内部process链接信号量D=‘0’,状态指示ST输出低电平,不让检测模块工作,模块本身对时钟信号不再敏感。等待下一次序列输入。序列检测模块复位后,状态机调到S0,正确序列值显示“203”,内部计数变量N清零,模块本身对时钟信号不再敏感,等待进入下一次检测。显示模块复位后,内部计数变量count清零,暂停动态扫描过程。 (本次复位信号说明完后将不会在后面分析图表时赘述) 4.2按键消抖模块 【图4.1】 模块源代码: library ieee; use ieee.std_logic_1164.all; entity anjian is port( clk,input:in std_logic; output:out std_logic ); end anjian; architecture gao of anjian is signal count:integer range 0 to 50; begin process(clk,input,count) begin if input='0' then count<=0;output<='0'; elsif clk'event and clk='1'then if count=50 then count<=count; else count<=count+1; end if; end if; if count=50 then output<='1'; elsif(input='0')then output<='0'; end if; end process; end gao; 模块单独仿真结果: 【图4.2】 【图4.1】【图4.2】说明: 【图4.1】为模块封装图,clk为时钟信号输入端,input为按键电平输入端,output为消抖后电平信号输出端。加入消抖模块是为了防止微处理器误判断上升沿和状态信号。 通过【图4.2】可以看出在输入端input高电平持续50个时钟上升沿后(实际为200ms),输出端output才输出高电平,输入端输入低电平后才输出低电平。达到了消抖和稳定输出电平的目的。 4.3分频模块1 【图4.3】 模块源代码: library ieee;--fenpin yihou zou qi wei 4ms; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity div_clk is port( clk_in : in std_logic; div_out : out std_logic ); end entity div_clk; architecture gao of div_clk is signal fre_n : integer range 0 to 100000; signal clk_tmp : std_logic; begin process(clk_in) begin if clk_in'EVENT AND clk_in='1'then if fre_n >99999 then fre_n<=0; clk_tmp<=not clk_tmp; else fre_n<=fre_n+1; end if; end if; end process; div_out<=clk_tmp; end gao; 模块单独仿真: 【图4.4】(因笔记本计算速度的限制(注意图片右下角),未能完成对50MHZ分频模块的仿真。) 【图4.3】【图4.4】说明: 【图4.3】为模块封装图,clk_in为高频时钟信号输入端,clk_out为分频后时钟信号输出端。 当检测到100000个50MHZ原始信号的上升沿后,输出端div_out通过clk_tmp内部信号输出一次翻转信号,从而达到200000分频的目的,降低了时钟频率(目的时钟频率降低为250HZ)。输出时钟信号给消抖模块用,用于计算稳定电平的时间。    4.4分频模块2 【图4.5】 模块源代码: library ieee;--fenpin yihou zou qi wei 4ms; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity gao_clk is port( clk_in : in std_logic; div_out : out std_logic ); end entity gao_clk; architecture gao of gao_clk is signal fre_n : integer range 0 to 1000; signal clk_tmp : std_logic; begin process(clk_in) begin if clk_in'EVENT AND clk_in='1'then if fre_n >999 then fre_n<=0; clk_tmp<=not clk_tmp; else fre_n<=fre_n+1; end if; end if; end process; div_out<=clk_tmp; end gao;
本文档为【vhdl 序列检测】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_574951
暂无简介~
格式:doc
大小:44KB
软件:Word
页数:13
分类:
上传时间:2019-05-28
浏览量:17