目录
摘要: 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;