实验务
8LED实现彩灯功进行波形仿真通实验进步掌握采计数判断方式实现分频VHDL编程方法移位运算符
二实验环境
软件实验环境Quartus II 81开发软件
三实验原理
彩灯LED定规律显示亮灭组合彩灯设计采4种亮灭方式时钟脉CLK计数器加1判断计数器中数值达25000000时会定方式点亮8ledFPGA输出数应该首先10000000隔1秒钟变成11000000……直变化111111样次点亮灯形成流水灯8灯点亮时操作灯恢复初始状态:灯亮然次流水果右移位出现右流水现象反左流水
流水灯原理:00方式流水灯次亮灭方式01方式两边中间点亮方式10方式连续两灯时流水灯亮灭11方式中间两边点亮方式
实验程序定义彩灯端口部分结构部分(控制部分)进程部分(分频部分实验未注释部分出)
四实验步骤
1建立新工程项目:
开Quartus II软件进入集成开发环境点击File→New project wizard建立工程项目caideng
2建立文编辑文件:
点击File→New该项目新建VHDL源程序文件caidengv输入试验程序中源程序代码保存选择工具栏中钮启动编译编译中发现错误找出更正错误直编译成功止
3编译工程项目:
Quartus II页面选择Processing—Start Compilation点击工具栏钮启动编译直出现Full Compilation Report话框点击OK
4波形仿真:
建立波形文件caidengvwf 选择相应节点进行功仿真仿真图
五实验现象:
分设置selmode 00011011波形仿真图
00方式仿真图
01方式仿真图
10方式仿真图
11 方式仿真图
六实验程序
LIBRARY IEEE
USE IEEEstd_logic_1164ALL
USE IEEEstd_logic_ARITHALL
USE IEEEstd_logic_UNSIGNEDALL
ENTITY CaiDeng IS
port
(
CLKIN std_logic
RSTin std_logic
SelModein std_logic_vector(1 downto 0)彩灯花样控制
Lightout std_logic_vector(7 downto 0)
)
END CaiDeng
ARCHITECTURE control OF CaiDeng IS
SIGNAL clk1msstd_logic'0'
SIGNAL cnt1std_logic_vector(3 downto 0)0000
SIGNAL cnt2std_logic_vector(1 downto 0)00
SIGNAL cnt3std_logic_vector(3 downto 0)0000
SIGNAL cnt4std_logic_vector(1 downto 0)00
BEGIN
P1PROCESS(clk)
BEGIN
if(clk'EVENT AND clk'1')then
if selmode00 then 第种彩灯花样程序
if cnt11111 then
cnt1<0000
else
cnt1< cnt1+1
end if
case cnt1 is
when 0000>light<10000000
when 0001>light<11000000
when 0010>light<11100000
when 0011>light<11110000
when 0100>light<11111000
when 0101>light<11111100
when 0110>light<11111110
when 0111>light<11111111
when 1000>light<11111110
when 1001>light<11111100
when 1010>light<11111000
when 1011>light<11110000
when 1100>light<11100000
when 1101>light<11000000
when 1110>light<10000000
when others>light<00000000
end case
elsif selmode01 then 第二种彩灯花样程序
if cnt211 then
cnt2<00
else cnt2< cnt2+1
end if
case cnt2 is
when 00>light<10000001
when 01>light<11000011
when 10>light<11100111
when 11>light<11111111
when others>light<00000000
end case
elsif selmode10 then 第三种彩灯花样程序
if cnt31111 then
cnt3<0000
else cnt3
case cnt3 is
when 0000>light<11000000
when 0001>light<01100000
when 0010>light<00110000
when 0011>light<00011000
when 0100>light<00001100
when 0101>light<00000110
when 0110>light<00000011
when 0111>light<00000110
when 1000>light<00001100
when 1001>light<00011000
when 1010>light<00110000
when 1011>light<01100000
when 1100>light<11000000
when others>light<00000000
end case
elsif selmode11 then 第四种彩灯花样程序
if cnt411 then
cnt4<00
else cnt4< cnt4+1
end if
case cnt4 is
when 00>light<00011000
when 01>light<00111100
when 10>light<01111110
when 11>light<11111111
when others>light<00000000
end case
end if
end if
END PROCESS P1
P2PROCESS(clk) 分频进程
variable cntinteger range 0 to 1000
BEGIN
IF(RST'0')then
cnt0
ELSIF(clk'EVENT AND clk'1')then
if cnt<999 then
cntcnt+1
clk1ms<'0'
else
cnt0
end if
end PROCESS P2
end control
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档