流水灯VHDL
verilog- HDL实现流水灯
用verilog实现流水灯module flow_deng(input wire pin_clk_in,input wire pin_rest_n ,input wire [1:0] pin_ctrl,output reg [7:0] pin_led_out);wire clk ;reg [31: 0] counter32;//fen pingalways @ (posedge pin_clk_in or negedge pin_rest_n) begin if(pin_rest_n==1'b0) begincounter32 <= 32'b0;endelse begincounter32 <= counter32+1'b1;endendassign clk = counter32[3] ; //16 fen pinreg [4:0] state;parameter [4:0] IDLE =5'b0_0001;parameter [4:0] RIGHT =5'b0_0010;parameter [4:0] LEFT =5'b0_0100;parameter [4:0] DOUB_LEFT =5'b0_1000;parameter [4:0] ERROR =5'b1_0000;reg [4:0] cur_sta;always @ (posedge clk or negedge pin_rest_n) begin if(pin_rest_n==1'b0) beginstate <= IDLE ;endelse begincase (state)IDLE : beginif (pin_ctrl==2'b00) beginstate <= LEFT ;endelse if (pin_ctrl==2'b01) beginstate <= RIGHT ;endelse if (pin_ctrl==2'b10) beginstate <= DOUB_LEFT ;endelse beginstate <= ERROR ;endendLEFT : beginif (pin_ctrl==2'b00) beginstate <= LEFT ;endelse if (pin_ctrl==2'b01) beginstate <= RIGHT ;endelse if (pin_ctrl==2'b10) beginstate <= DOUB_LEFT ;endelse beginstate <= ERROR ;endendRIGHT : beginif (pin_ctrl==2'b00) beginstate <= LEFT ;endelse if (pin_ctrl==2'b01) beginstate <= RIGHT ;endelse if (pin_ctrl==2'b10) beginstate <= DOUB_LEFT ;endelse beginstate <= ERROR ;endendDOUB_LEFT : beginif (pin_ctrl==2'b00) beginstate <= LEFT ;endelse if (pin_ctrl==2'b01) beginstate <= RIGHT ;endelse if (pin_ctrl==2'b10) beginstate <= DOUB_LEFT ;endelse beginstate <= ERROR ;endendERROR : beginif (pin_ctrl==2'b00) beginstate <= LEFT ;endelse if (pin_ctrl==2'b01) beginstate <= RIGHT ;endelse if (pin_ctrl==2'b10) beginstate <= DOUB_LEFT ;endelse beginstate <= ERROR ;endenddefault: state <= IDLE ;endcaseendendalways @ (posedge clk or negedge pin_rest_n) beginif (pin_rest_n == 1'b0) beginpin_led_out[7:0]<=8'b0000_0000 ;endelse begincase (state)IDLE : beginpin_led_out [7:0] <=8'b0000_0000 ;endLEFT : beginif((pin_led_out[0]+pin_led_out[1]+pin_led_out[2]+pin_led_out[3]+pin_led_out[4]+pin_led_out[5]+pin_led_out[6]+pin_led_out[7])!=8'd1 ) beginpin_led_out[7:0] <= 8'b0000_0001;endelse beginpin_led_out[7:1] <= pin_led_out[6:0];pin_led_out[0] <= pin_led_out[7];endendRIGHT : beginif((pin_led_out[0]+pin_led_out[1]+pin_led_out[2]+pin_led_out[3]+pin_led_out[4]+pin_led_out[5 ]+pin_led_out[6]+pin_led_out[7])!=8'd1 ) beginpin_led_out [7:0] <= 8'b0000_0001 ;endelse beginpin_led_out [6:0] <= pin_led_out [7:1] ;pin_led_out [7] <= pin_led_out [0] ;endendDOUB_LEFT : beginif((pin_led_out[0]+pin_led_out[1]+pin_led_out[2]+pin_led_out[3]+pin_led_out[4]+pin_led_out[5] +pin_led_out[6]+pin_led_out[7])!=8'd2 ) beginpin_led_out [7:0] <= 8'b0000_0011 ;endelse beginpin_led_out [7:1] <= pin_led_out [6:0] ;pin_led_out [0] <= pin_led_out [7] ;endendERROR : beginpin_led_out [7:0]<=8'b1111_1111;enddefault : pin_led_out [7:0] <= 8'b0000_0000;endcaseendendendmodule。
EDA流水灯论文(VHDL)
滨江学院课程论文(可编程器件原理与应用)题目基于VHDL语言的流水灯设计学生姓名王秋阳学号20082305047院系滨江学院专业电子与信息工程指导教师刘建成二零一零年十二月三十日一、任务:采用ALTERA 公司的EPM7128SLC84-10芯片,通过VHDL 语言设计一个流水灯电路。
流水灯样式必须大于3种,且可以通过按键调节显示样式;可以通过按键调节流水灯变化快慢;当前流水灯样式和变化速度能够通过数码管显示出来;(附加:具有按键声)二、设计框图(框图说明)1MHZ 周期信号经过2个100分频,得到100HZ ,再经过1个10分频得到10HZ 信号,传给速度控制模块,得到需要的速度周期信号,然后传给样式选择模块,样式选择模块直接输出彩灯样式;控制模块通过接受两个按键信号,同时控制速度控制模块和样式选择模块;译码扫描模块通过判断控制模块,扫描数码管显示当前彩灯样式和彩灯变化速度;按键信号通过延时模块输出按键发生信号。
速度按键 样式按键控制模块速度控制样式选择译码和扫描数码显示彩灯显示1000HZ 信号100HZ 信号蜂鸣器三、原理图(CPLD内部原理说明)从原理图中可以看到,一共有8种模块,D触发器的作用是对按钮进行消抖,除D触发器之外的7个模块功能及作用如下:f100和f10分别是100和10的分频器,speed模块的作用是对彩灯变化速度进行控制,而style_switch模块的作用是对彩灯样式进行调节。
Control 模块接收按键信号对样式和速度进行总的控制。
Show模块是对速度值和样式值进行译码并进行扫描数码管,将当前样式和速度状态显示出来。
Delay模块则是对按键声的延时。
四、各个模块设计(波形仿真)1.f100模块功能:100分频波形仿真:VHDL代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity f100 is --100分频port(clk:in std_logic;sec:out std_logic);end entity f100;architecture getsec of f100 issignal secout : std_logic :='1';beginprocess(clk) isvariable count100: integer range 0 to 50;beginif clk'event and clk='1' thencount100:=count100+1;if count100=50 thensecout<=not secout;count100:=0;end if;end if;end process;sec<=secout;end architecture getsec;2.f10模块功能:10分频波形仿真:VHDL代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity f10 is –-10分频port(clk:in std_logic;sec:out std_logic);end entity f10;architecture getsec of f10 issignal secout : std_logic :='1';beginprocess(clk) isvariable count10: integer range 0 to 5;beginif clk'event and clk='1' thencount10:=count10+1;if count10=5 thensecout<=not secout;count10:=0;end if;end if;end process;sec<=secout;end architecture getsec;3.speed模块功能:根据DATE输入端的数值大小,产生不同频率的周期信号,从而达到控制彩灯变化速率的目的。
流水灯VHDL Done1
基于VHDL流水灯的设计电子信息科学与技术刘敏何磊成江波一、设计内容流水灯是一串按一定的规律像流水一样连续闪亮,流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。
流水灯控制可用多种方法实现,但对现代可编程控制器而言,基于EDA技术的流水灯设计也是很普遍的。
要求采用可编程逻辑器件实现一个流水灯控制电路,12个LED灯能连续发出4种不同的流水显示形式。
彩灯控制器的第1种花样为彩灯按顺时针方向逐次点亮;第2种花样为彩灯按逆时针方向逐次点亮,然后全灭全亮;第3种花样为彩灯两边同时亮1、"2、3、"4、5、"6个逐次向中间移动再散开;第4种花样为彩灯连续交叉闪烁。
多个花样自动变换,循环往复。
二、设计方案彩灯是由FPGA板上的LED灯代替,有以下4种闪烁效果1.彩灯按顺时针方向逐次点亮。
2.彩灯按逆时针方向逐次点亮,然后全灭全亮。
3.彩灯两边同时亮1、"2、4、5、"6个逐次向中间移动再散开。
4.彩灯连续交叉闪烁。
本控制电路采用VHDL语言设计。
运用自顶而下的设计思想,按功能逐层分割实现层次化设计。
根据多路彩灯控制器的设计原理,分别对应彩灯的四种变化模式、利用VHDL语言实现该功能.三、系统框图脉冲信号顺序脉冲译码逻辑电路流水灯闪烁四、流水灯设计程序library IEEE;use IEEE.STD_LOGIC_1164."all;use IEEE.STD_LOGIC_unsigned.all;entity led1 isport(sysclk:in std_logic;out std_logic_vector(11 downto 0) );end led1;architecture jgt of led1 isstd_logic_vector ( 7 downto 0);--variable count:integer RANGE 0 TO 7;signal count :std_logic_vector(5 DOWNTO 0); beginprocess(sysclk)beginif ( sysclk'event and sysclk = '1') thencount <=count+1;end if ;end if;end process;process (count)case count iswhen "000" =>dout <= ""; when "0001" =>dout <= ""; when "0010" =>dout <= ""; when "0011" =>dout <= ""; when "000100" =>dout <= ""; when "0001" =>dout <= ""; when "000110" =>dout <= ""; when "000111" =>dout <= ""; when "001000" =>dout <= ""; when "001" =>dout <= ""; when "0010" =>dout <= ""; when "0011" =>dout <= ""; when "001100" =>dout <= ""; when "001101" =>dout <= ""; when "001110" =>dout <= ""; when "0011" =>dout <= ""; when "0100" =>dout <= ""; when "010001" =>dout <= ""; when "010" =>dout <= "";when "0100" =>dout <= "";when "0101" =>dout <= "";when "0110" =>dout <= "";when "0111" =>dout <= "111111"; when "011000" =>dout <= "000000"; when "011001" =>dout <= ""; when "0110" =>dout <= "";when "011" =>dout <= "1";when "011100" =>dout <= ""; when "011101" =>dout <= ""; when "0110" =>dout <= "";when "0111" =>dout <= "";when "1000" =>dout <= "";when "1001" =>dout <= "1";when "100010" =>dout <= ""; when "100011" =>dout <= ""; when "100" =>dout <= "";when "1001" =>dout <= "110011"; when "100110" =>dout <= "110011"; when "100111" =>dout <= "110011";when "1001" =>dout <= "0";when "1010" =>dout <= "1";when "1011" =>dout <= "0";when "101100" =>dout <= "001100"; when "101" =>dout <= "110011"; when "101110" =>dout <= ""; when "1011" =>dout <= "000111"; when "1100" =>dout <= "010101"; when "110001" =>dout <= "101010"; when "110010" =>dout <= "010101"; when "110011" =>dout <= "101010"; when "1100" =>dout <= "010101"; when "1101" =>dout <= "101010"; when "110" =>dout <= "010101"; when "110111" =>dout <= "101010"; when "111000" =>dout <= "010101"; when "111001" =>dout <= "101010"; when "1110" =>dout <= "010101"; when "111011" =>dout <= "101010"; when "1100" =>dout <= "010101";when "1101" =>dout <= "101010";when "1110" =>dout <= "010101";when "111" =>dout <= "101010";when others=>null;end case;end process;end jgt;五、系统仿真与调试1.仿真波形图通过QuartusII软件,我们进行了仿真,其仿真波形如下图:图一:仿真波形图由设计要求可知,本设计要求采用可编程逻辑器件实现一个流水灯控制电路,12个LED灯能连续发出4种不同的流水显示形式。
可编程逻辑器件应用流水灯VHDL设计报告
目录一、任务分工 (2)一、系统设计 (2)1.1模式自动切换 (2)1.2自动时钟分频 (2)1.3 模式与分频融合 (2)二、总体方案 (3)1模块化设计 (3)1.1假定输入时钟,计算变频时间 (3)1.2模式切换实时跟随输入时钟切换 (3)二、最终程序 (4)1分频模块 (4)2、模式控制模块 (5)三、仿真结果 (7)1、分频仿真 (7)2、流水灯仿真 (7)四、实验成果 (8)一、任务分工王定:变频模块设计裴振伟:模式切换王涛、贾晋生:实验仿真吴晓屹:ppt制作一、系统设计1.1模式自动切换对系统时钟输入进行计数:每个各上升沿来临时,led 灯都会做出相应的变化。
1.2自动时钟分频对系统输入时钟多段分频:本设计利用脉冲精准计时,以100HZ信号为例,周期为10ms。
每512个脉冲计数进行一次分频,时间大约500ms为一个节点。
进行了四次分频,分别为二分频、四分频、八分频、十六分频。
1.3 模式与分频融合变频模块与模式控制模块独立工作,其产生的原理图如下图1自变频流水灯原理图二、总体方案1模块化设计1.1假定输入时钟,计算变频时间1.2模式切换实时跟随输入时钟切换二、最终程序1分频模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;----------------------------------------------ENTITY FENPIN ISPORT(clk: IN STD_LOGIC;--时钟输入fenpinout: OUT STD_LOGIC);END ENTITY FENPIN;---------------------------------------------------ARCHITECTURE rtl OF FENPIN ISSIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0); --定义一个四位的信号SIGNAL countout:STD_LOGIC_VECTOR(11 DOWNTO 0); --定义一个四位的信号]BEGINPROCESS(clk)BEGINIF(clk' event AND clk ='1') THEN --上升沿到来,100HZ,T=1/100S=0.01S=10ms countout<=countout+1;IF (count="1111") THEN --达到最大计数值count<="0000"; --置零ELSEcount<=count+1; --计数END IF;END IF;IF (countout>="100111111100") THENcountout<="000000000000";ELSIF (countout<="000111111111") THEN --512fenpinout<=count(0);ELSIF (countout>"000111111111") AND (countout<="001111111111") THEN fenpinout<=count(1);ELSIF (countout>"001111111111") AND (countout<="010*********") THENfenpinout<=count(2);ELSIF (countout>"010*********") AND (countout<="011111111101") THEN fenpinout<=count(3);END IF;END PROCESS;END rtl;2、模式控制模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY LED_MODE ISPORT(CLK:IN STD_LOGIC;LED_OUT:OUT STD_LOGIC_VECTOR(11 DOWNTO 0));END ENTITY LED_MODE;ARCHITECTURE BEHAVE OF LED_MODE ISBEGINPROCESS(CLK) ISVARIABLE TEMP: INTEGER RANGE 0 TO 47;BEGINIF (CLK'EVENT AND CLK='1') THENtemp:=temp+1;CASE TEMP ISWHEN 0 => LED_OUT <="111111111110";WHEN 1=> LED_OUT <="111111111101";WHEN 2=> LED_OUT <="111111111011";WHEN 3=> LED_OUT <="111111110111";WHEN 4=> LED_OUT <="111111101111";WHEN 5=> LED_OUT <="111111011111";WHEN 6=> LED_OUT <="111110111111";WHEN 7=> LED_OUT <="111101111111";WHEN 8=> LED_OUT <="111011111111";WHEN 9=> LED_OUT <="110111111111";WHEN 10=> LED_OUT <="101111111111";WHEN 11=> LED_OUT <="011111111111";WHEN 12=> LED_OUT <="011111111111";WHEN 13=> LED_OUT <="101111111111";WHEN 14=> LED_OUT <="110111111111";WHEN 15=> LED_OUT <="111011111111";WHEN 16=> LED_OUT <="111101111111";WHEN 17=> LED_OUT <="111110111111";WHEN 18=> LED_OUT <="111111011111";WHEN 19=> LED_OUT <="111111101111";WHEN 20=> LED_OUT <="111111110111";WHEN 21=> LED_OUT <="111111111011";WHEN 22=> LED_OUT <="111111111101";WHEN 23=> LED_OUT <="111111111110";WHEN 24=> LED_OUT <="111111111111";WHEN 25=> LED_OUT <="011111111110";WHEN 26=> LED_OUT <="101111111101";WHEN 27=> LED_OUT <="110111111011";WHEN 28=> LED_OUT <="111011110111";WHEN 29=> LED_OUT <="111101101111";WHEN 30=> LED_OUT <="111110011111";WHEN 31=> LED_OUT <="111101101111";WHEN 32=> LED_OUT <="111011110111";WHEN 33=> LED_OUT <="110111111011";WHEN 34=> LED_OUT <="101111111101";WHEN 35=> LED_OUT <="011111111110";WHEN 36=> LED_OUT <="111111111111";WHEN 37=> LED_OUT<="001111111111";WHEN 38=> LED_OUT <="100111111111";WHEN 39=> LED_OUT <="110011111111";WHEN 40=> LED_OUT <="111001111111";WHEN 41=> LED_OUT <="111100111111";WHEN 42=> LED_OUT <="111110011111";WHEN 43=> LED_OUT <="111111001111";WHEN 44=> LED_OUT <="111111100111";WHEN 45=> LED_OUT <="111111110011";WHEN 46=> LED_OUT <="111111111001";WHEN 47=> LED_OUT <="111111111100";WHEN OTHERS=>LED_OUT<="111111111111";END CASE;END IF;END PROCESS;END BEHAVE;三、仿真结果1、分频仿真由于频率切换所需脉冲数量过多,不便于观测,未进行仿真。
VerilogHDL流水灯设计
VerilogHDL流水灯设计第一篇:VerilogHDL流水灯设计大规模数字逻辑题目:流水灯控制专业电子信息科学与技术班级学号学生姓名设计时间教师评分2013年 12 月 10 日目录一、概述 (1)二、设计目的 (1)三、设计内容 (1)四、设计原理图 (1)五、引脚分配情况 (2)六、源程序代码...........................................2 VerilogHDL 程序:.....................................2 分频器部分: (5)七、心得体会 (6)八、参考文献 (6)一、概述流水灯是一串按一定的规律像流水一样连续闪亮,流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。
流水灯控制可用多种方法实现,但对现代可编程控制器而言,基于EDA技术的流水灯设计也是很普遍的。
二、设计目的1、熟悉利用Quartus II 开发数字电路的基本流程和Quartus II 软件的相关操作。
2、掌握基本的设计思路,软件环境参数配置,仿真,管脚分配,利用JTAG/AS进行下载等基本操作。
3、了解VerilogHDL 语言设计或原理图设计方法。
4、通过本此设计,了解流水灯的工作原理,掌握其逻辑功能及设计方法。
三、设计内容1、用VerilogHDL语言设计一个流水灯,输入0的时候led~led7,1Hz正向流水3次,然后全亮;然后2Hz逆向流水5次全亮;循环。
输入1的时候led0~led7,0.5Hz奇数流水2次,全亮,1Hz偶数流水4次,全亮,然后循环。
2、用QuartusII 软件进行编译,仿真,下载到实验平台进行验证。
四、设计原理图en为可调输入,输出为8位数据,为流水灯实验,试用8个LED 指示灯来表示,具体引脚分配见下。
五、引脚分配情况六、源程序代码VerilogHDL 程序:module LED(clk,led,en);input clk;input en;output [7:0]led;// 输出端口定义为寄存器型reg [7:0] led;reg [8:0] state1;reg [8:0] state2;always @(posedge clk)// always语句,表示每当CLK的上升沿到来时,完成begin-end之间语句的操作if(!en)begin state2 = 0;state1 = state1 + 1;// one clk,one statecase(state1)1,2: led <= 8'b00000001;//1-7 zhengxu,3bian3,4: led <= 8'b00000010;7,8: led <= 8'b00001000;9,10: led <= 8'b00010000;11,12: led <= 8'b00100000;13,14: led <= 8'b01000000;15,16: led <= 8'b10000000;17,18: led <= 8'b00000001;19,20: led <= 8'b00000010;21,22: led <= 8'b00000100;23,24: led <= 8'b00001000;25,26: led <= 8'b00010000;27,28: led <= 8'b00100000;29,30: led <= 8'b01000000;31,32: led <= 8'b10000000;33,34: led <= 8'b00000001;35,36: led <= 8'b00000010;37,38: led <= 8'b00000100;39,40: led <= 8'b00001000;41,42: led <= 8'b00010000;43,44: led <= 8'b00100000;45,46: led <= 8'b01000000;47,48: led <= 8'b10000000;49: led <= 8'b11111111;//quanliang 50: led <= 8'b10000000;51: led <= 8'b01000000;52: led <= 8'b00100000;53: led <= 8'b00010000;54: led <= 8'b00001000;55: led <= 8'b00000100;56: led <= 8'b00000010;58: led <= 8'b10000000; 59: led <= 8'b01000000; 60: led <= 8'b00100000; 61: led <= 8'b00010000; 62: led <= 8'b00001000; 63: led <= 8'b00000100; 64: led <= 8'b00000010; 65: led <= 8'b00000001; 66: led <= 8'b10000000; 67: led <= 8'b01000000; 68: led <= 8'b00100000; 69: led <= 8'b00010000; 70: led <= 8'b00001000; 71: led <= 8'b00000100; 72: led <= 8'b00000010; 73: led <= 8'b00000001; 74: led <= 8'b10000000; 75: led <= 8'b01000000; 76: led <= 8'b00100000; 77: led <= 8'b00010000; 78: led <= 8'b00001000; 79: led <= 8'b00000100; 80: led <= 8'b00000010; 81: led <= 8'b00000001; 82: led <= 8'b10000000; 83: led <= 8'b01000000; 84: led <= 8'b00100000; 85: led <= 8'b00010000; 86: led <= 8'b00001000;88: led <= 8'b00000010;89: led <= 8'b00000001;90: led <= 8'b11111111;91: begin led <= 8'b00000000;state1=0;end default: state1 = 0;endcaseendelsebegin state1 = 0;state2 = state2 + 1;// one clk,one statecase(state2)1,2,3,4: led <= 8'b00000001;5,6,7,8: led <= 8'b00000100;9,10,11,12: led <= 8'b00010000;13,14,15,16: led <= 8'b01000000;17,18,19,20: led <= 8'b00000001;21,22,23,24: led <= 8'b00000100;25,26,27,28: led <= 8'b00010000;29,30,31,32: led <= 8'b01000000;33: led <= 8'b11111111;34,35: led <= 8'b00000010;36,37: led <= 8'b00001000;38,39: led <= 8'b00100000;40,41: led <= 8'b10000000;42,43: led <= 8'b00000010;44,45: led <= 8'b00001000;46,47: led <= 8'b00100000;48,49: led <= 8'b10000000;50,51: led <= 8'b00000010;52,53: led <= 8'b00001000;54,55: led <= 8'b00100000;56,57: led <= 8'b10000000;58,59: led <= 8'b00000010;60,61: led <= 8'b00001000;62,63: led <= 8'b00100000;64,65: led <= 8'b10000000;66: led <= 8'b11111111;67:begin led <= 8'b00000000;state2=0;enddefault: state2 = 0;// default,8'b11111110endcaseend Endmodule分频器部分:module clk_div(clk_out,clk_in);input clk_in;output clk_out;reg clk_out;reg[25:0]counter;//50_000_000=1011_1110_1011_1100_0010_0000_00 parameter cnt=25_000_000;/// 50MHz is the sys clk,50_000_000=2FAF080always @(posedge clk_in)begincounter<=counter+1;if(counter==cnt/2-1)beginclk_out<=!clk_out;counter<=0;endend endmodule 5七、心得体会通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。
本实验为LED流水灯实验VHDL
--本实验为LED流水灯实验。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.std_logic_unsigned.ALL;ENTITY LampsSequencer isPORT(clk:in STD_LOGIC;led1:out STD_LOGIC_VECTOR(7 DOWNTO 0));END LampsSequencer;ARCHITECTURE light OF LampsSequencer ISSIGNAL clk1,CLK2:std_logic;BEGINP1:PROCESS (clk)V ARIABLE count:INTEGER RANGE 0 TO 999999;BEGINIF clk'EVENT AND clk='1' THEN --当时钟脉冲上升沿到来时执行下面语句IF count<=499999 THENclk1<='0'; --当count<=499999时divls=0并且count加1count:=count+1;ELSIF count>=499999 AND count<=999999 THEN --当ount>=499999 并且count<=999998时clk1<='1'; --count:=count+1; --clk1=1并且count加1ELSE count:=0; --当count>=499999时清零count1END IF;END IF;END PROCESS ;P3:PROCESS(CLK1)beginIF clk1'event AND clk1='1'THENclk2<=not clk2;END IF;END PROCESS P3;---------------------------------------------------------P2:PROCESS(clk2)variable count1:INTEGER RANGE 0 TO 16; --定义的整型变量用做计数器BEGIN --IF clk2'event AND clk2='1'THEN --当时钟脉冲上升沿到来时执行下面语句if count1<=16 then --当COUNT1<=9时执行下面语句if count1=15 then --当COUNT1=8时,COUNT1清零count1:=0; -- end if; --CASE count1 IS --CASE语句给输出LED1赋值WHEN 0=>led1<="11111110"; --依次点亮发光二极管WHEN 1=>led1<="11111100"; --WHEN 2=>led1<="11111000"; --WHEN 3=>led1<="11110000"; --WHEN 4=>led1<="11100000"; --WHEN 5=>led1<="11000000"; --WHEN 6=>led1<="10000000"; --WHEN 7=>led1<="00000000";WHEN 8=>led1<= "01111111"; --依次点亮发光二极管WHEN 9=>led1<= "00111111"; --WHEN 10=>led1<="00011111"; --WHEN 11=>led1<="00001111"; --WHEN 12=>led1<="00000111"; --WHEN 13=>led1<="00000011"; --WHEN 14=>led1<="00000001"; --WHEN 15=>led1<="00000000"; -- --WHEN OTHERS=>led1<="11111111";END CASE;count1:=count1+1;end if;end if;end process;END light;。
vhdl流水灯课程设计报告
院系:姓名:学号:课程设计名称:指导老师:时间:摘要VHDL的特点应用VHDL进行系统设计,有以下几方面的特点。
(一)功能强大VHDL具有功能强大的语言结构。
它可以用明确的代码描述复杂的控制逻辑设计。
并且具有多层次的设计描述功能,支持设计库和可重复使用的元件生成。
VHDL是一种设计、仿真和综合的标准硬件描述语言。
(二)可移植性VHDL语言是一个标准语言,其设计描述可以为不同的EDA工具支持。
它可以从一个仿真工具移植到另一个仿真工具,从一个综合工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台。
此外,通过更换库再重新综合很容易移植为ASIC设计。
(三)独立性VHDL的硬件描述与具体的工艺技术和硬件结构无关。
设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。
程序设计的硬件目标器件有广阔的选择范围,可以是各系列的CPLD、FPGA及各种门阵列器件。
(四)可操作性由于VHDL具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序的条件下,只需改变端口类属参量或函数,就能轻易地改变设计的规模和结构。
(五)灵活性VHDL最初是作为一种仿真标准格式出现的,有着丰富的仿真语句和库函数。
使其在任何大系统的设计中,随时可对设计进行仿真模拟。
所以,即使在远离门级的高层次(即使设计尚未完成时),设计者就能够对整个工程设计的结构和功能的可行性进行查验,并做出决策。
VHDL的设计结构VHDL描述数字电路系统设计的行为、功能、输入和输出。
它在语法上与现代编程语言相似,但包含了许多与硬件有特殊关系的结构。
VHDL将一个设计称为一个实体Entity(元件、电路或者系统),并且将它分成外部的可见部分(实体名、连接)和内部的隐藏部分(实体算法、实现)。
当定义了一个设计的实体之后,其他实体可以利用该实体,也可以开发一个实体库。
所以,内部和外部的概念对系统设计的VHDL是十分重要的。
verilog语言循环流水灯LED流水从中间向两边点依次点亮
verilog语言循环流水灯LED流水从中间向两边点依
次点亮
目的是实现FPGA开发板上的四个LED灯依次点亮,每次只点亮一个,每个点亮时间是0.5s。
输入有时钟和复位信号,一路输出连接到FPGA开发板上的四个LED灯。
设置输出信号位宽四位宽,刚好一个位宽控制一个LED灯亮灭。
需要设置一个中间变量计数器,初值为0,因为50MHz晶振,0.5秒计数为25000000,从0开始计数,所以计数器计数最大值为24_999_999,当计数器在复位信号无效或计数到最大值时,对计数器进行清零操作。
再设置一个计数标致信号,在计数器计数到最大值时,拉高一个时钟周期的高电平,其他时刻保持低电平。
led灯是低电平点亮,所以想要第一个灯点亮就需要对输出信号赋初值1110,然后当计数标致信号为高电平且复位信号无效时,赋值为1101,下一个周期为1011,再下一个周期为0111,然后再是1110,这样就实现了流水灯效果。
这里需要用到移位操作,但需要注意的是在移位过程中,补位补的是0,及1101,1010,0100,1000,0000这就意味着最后所有灯都处于被点亮的状态,与目标不符。
于是再定义一个新的变量,对输出信号进行寄存。
初值为0001,接下来是0010,0100,1000,0001,输出信号对这个变量取反就可以得到预期结果。
计数到最大值时归零,计数器标致信号在最大值处拉高一个时钟周期,led输出与预期吻合。
FPGA入门系列实验教程——流水灯
FPGA入门系列实验教程——LED流水灯1.实验任务让实验板上的8个LED实现流水灯的功能。
通过这个实验,进一步掌握采用计数与判断的方式来实现分频的VHDL的编程方法以及移位运算符的使用。
2.实验环境硬件实验环境为艾米电子工作室型号EP2C8Q208C8增强版开发套件。
软件实验环境为Quartus II8.1开发软件。
3.实验原理流水灯,顾名思义就是让LED象水一样的点亮。
如果把流水做慢动作播放,可以想象到其实就是移动,即:把水块不断地向同一方向移动,而原来的水块保持不动,就形成了流水。
同样,如果使得最左边的灯先亮;然后,通过移位,在其右侧的灯,由左向右依次点亮,而已经亮的灯又不灭,便形成了向右的流水灯。
初始状态时,8个灯都不亮。
每来一个时钟脉冲CLK,计数器就加1。
每当判断出计数器中的数值达到25000000时,就会点亮一个灯,并进行移位。
FPGA输出的数据就应该首先是10000000,隔1秒钟变成11000000……一直变化到11111111,这样,依次点亮所有的灯,就形成了流水灯。
而当8个灯都点亮时,需要一个操作使得所有的灯恢复为初始状态,即:灯都不亮。
然后,再一次流水即可。
如果是右移位,就出现向右流水的现象;反之,向左流水。
4.实验程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity LED isport(clk:in std_logic;//设置时钟输入dout:out std_logic_vector(7downto0));//8位端口输出end LED;architecture behave of LED issignal p:std_logic_vector(31downto0);//信号变量signal t:std_logic_vector(8downto0);beginprocess(clk)beginif(clk'event and clk='1')then//判断上升沿信号p<=p+1;if(p=25000000)thent(8downto1)<=t(7downto0);//将低8位移至高8位t(0)<='1';//最地位置1p<="00000000000000000000000000000000";end if;if(t(8)='1')thent<="000000000";end if;end if;end process;dout<=t(7downto0);//将低8位赋给输出端口end behave;代码分析:先定义一个二进制32位的信号变量P和一个9位的信号变量t,时钟每产生一个上升沿的时钟跳变,P自动加1。
流水灯VHDL
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity liu isport (clk:in std_logic;s:in std_logic_vector(3 downto 0);led7s:out std_logic_vector(6 downto 0); zd:out std_logic;q:out std_logic_vector(7 downto 0)); end;architecture decl of liu issignal mode:std_logic_vector(2 downto 0); signal mode1:std_logic_vector(2 downto 0); begin------------------------------------------------彩灯--------------------process(clk,mode)variable qs:std_logic_vector(7 downto 0); beginif rising_edge(clk) then--从右到左连续点亮if mode=0 thenif qs=0 thenqs:="10000000";elsif qs="11111111" thenqs:="00000000";mode1<="001";elseqs(6 downto 0):=qs(7 downto 1);end if;--从左到右连续点亮elsif mode=1 thenif qs=0 thenqs:="00000001";elsif qs="11111111" thenqs:="00000000";mode1<="010";elseqs(7 downto 1):=qs(6 downto 0); end if;--从两边向中间连续点亮elsif mode=2 thenif qs=0 thenqs:="10000001";elsif qs="11111111" thenqs:="00000000";mode1<="011"; elseqs(6 downto 4):=qs(7 downto 5); qs(3 downto 1):=qs(2 downto 0); end if;--从中间向两边连续点亮elsif mode=3 thenif qs=0 thenqs:="00011000";elsif qs="11111111" thenqs:="00000000";mode1<="100"; elseqs(7 downto 5):=qs(6 downto 4); qs(2 downto 0):=qs(3 downto 1); end if;--从右到左逐个点亮elsif mode=4 thenif qs=0 thenqs:="10000000";elsif qs="00000001" thenqs:="00000000";mode1<="101"; elseqs(6 downto 0):=qs(7 downto 1); qs(7):='0';end if;--从左到右逐个点亮elsif mode=5 thenif qs=0 thenqs:="00000001";elsif qs="10000000" thenqs:="00000000";mode1<="110";elseqs(7 downto 1):=qs(6 downto 0);qs(0):='0';end if;--从中间向两边逐个点亮elsif mode=6 thenif qs=0 thenqs:="00011000";elsif qs="10000001" thenqs:="00000000";mode1<="111";elseqs(7 downto 5):=qs(6 downto 4);qs(4):='0'; qs(2 downto 0):=qs(3 downto 1);qs(3):='0'; end if;--从两边向中间逐个点亮elsif mode=7 thenif qs=0 thenqs:="10000001";elsif qs="00011000" thenqs:="00000000";mode1<="000";elseqs(6 downto 4):=qs(7 downto 5);qs(7):='0'; qs(3 downto 1):=qs(2 downto 0);qs(0):='0'; end if;end if;end if;q<=qs;end process;process(s,mode1)beginif s(3)='0' thenmode<=mode1;elsemode<=s(2 downto 0);end if;end process;zd<=s(3);------译码--------------------- process(mode)begincase mode iswhen "000" =>led7s<="0000110"; when "001" =>led7s<="1011011"; when "010" =>led7s<="1001111"; when "011" =>led7s<="1100110"; when "100" =>led7s<="1101101"; when "101" =>led7s<="1111101"; when "110" =>led7s<="0000111"; when others=>led7s<="0111111"; end case;end process;end;。
EDA:流水灯实验
end process;
led_8bit<=tmp;
end keyboard1;
在完成流水灯源程序的编辑后,执行”Processing”菜单下的“Start Compilation”命令,对keyboard1.vhd进行编译。
在完成对源文件的编译后,执行“File”菜单的“New”命令,或者直接按主窗口上的“创建新的文本文件”按钮,在弹出的新文件类型选择对话框中,选择“Vector Waveform File”生成仿真文件。
对引脚进行锁定。
执行”Assignments”菜单下的“Pins”命令,根据下图进行引脚设置。
用电缆连接电脑与设备箱,执行”Tools”菜单下的“Programmer”命令,在弹出的对话框中,单击“Hardware Setup”并在新弹出的对话框中选择驱动,然后退出至上一层对话框,单击“Start”进行下载烧录。
【实验数据整理与归纳】
keyboard11.vhd 实际效果图
keyboard11.vwf
【实验结果与分析】
计数译码系统电路的仿真波形如图keyboard11.vwf所示,键值为"1110"时,LED0~LED7的状态应为"11000000";键值为"1101"时,LED0~LED7的状态应为"00110000",依此类推。
仿真结果验证了设计的正确性。
而实际情况与仿真结果相吻合。
【实验中遇到的问题及解决方案】
1.不知道如何对引脚进行锁定。
解决方案:上网搜寻教程。
2.驱动安装失败。
解决方案:根据老师发的教程,更换别的方法进行安装。
流水灯基于Verilog语言实现及测试代码
流水灯实验的Testbench报告一、设计源码(顺序方法)module led(input clk,input rstn,output reg[3:0]led);parameter T1s = 4'd10;reg[3:0]cnt_1s;always@(posedge clk or negedge rstn)if(!rstn)begincnt_1s <= 0;endelse if(cnt_1s == T1s)begincnt_1s <= 0;endelse begincnt_1s <= cnt_1s + 1'b1;endalways@(posedge clk or negedge rstn)if(!rstn)beginled <= 4'hf;endelse if(led == 4'hf) beginled <= 4'he;endelse if(cnt_1s == T1s)beginled <= {led[2:0],1'b1};endendmodule二、测试代码`timescale 1 ns/1 nsmodule led_tb();reg clk ;reg rstn;wire[3:0] led;parameter CYCLE = 20;parameter RST_TIME = 3 ;led u( .clk (clk ),.rstn (rstn ),.led (led ));initial beginclk = 0;forever#(CYCLE/2)clk=~clk;endinitial beginrstn = 1;#CYCLE;rstn = 0;#(CYCLE*RST_TIME);rstn = 1;endendmoduleTestbench设计的几个步骤:1、设定时间标尺、timescale;2、定义信号类型,与输入对接的reg,与输出对接的wire;3、对待测设计的顶层模块进行例化,即将testbench与待测设计接口对接;4、给输入接口产生激励。
用FPGA实现的流水灯VHDL代码
双击图标选择 bit 文件。右键图标选 择
可编辑
-------------精选文档-----------------
Program
可编辑
-------------精选文档-----------------
设计目的:
在 8 盏 LED 灯每隔一秒钟顺序循环提供高电平使 LED 亮,复位键使 LED 全部置低电平使 LED 灭,重新进行流ED(1) LED(2) LED(3) LED(4) LED(5) LED(6) LED(7)
entity LED_FLASH_VHD is Port ( clk : in STD_LOGIC;
可编辑
-------------精选文档-----------------
rst : in STD_LOGIC; LED_RUN : out STD_LOGIC_VECTOR (7 downto 0)); end LED_FLASH_VHD;
其中 cnt 实现记数功能,对时钟进行分频。 Step 实现让具体哪一盏灯亮。 使用引脚: 复位 rst(Y18)、时钟 clk(D11)、LED 灯(N19、 N15、 R20、R18、U20、
T18、U18、W20);
具体设计:
1、 打开设计软件 Xilinx ISE 11,新建工程 2、 新建 VHDL Module 设置代码,对时钟进行分频: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
可编辑
基于VHDL语言状态机编写流水灯
基于VHDL语言状态机编写流水灯基于VHDL语言状态机编写流水灯采用元件例化方式编写流水灯包含以下三个程序:第一个程序代码如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--use IEEE.NUMERIC_STD.ALL;-- Uncomment the following library declaration if instantiating -- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity fenpin isPort ( clk : in STD_LOGIC;clkout : out STD_LOGIC);end fenpin;architecture Behavioral of fenpin issignal clk1:std_logic:='0';beginprocess(clk)variable cnt:integer range 0 to 4095;variable cnt1:integer range 0 to 4095;beginif clk'event and clk='1' thenif cnt=4095 thencnt:=0;clk1<=not clk1;elseif cnt1=4095 thencnt1:=0;cnt:=cnt+1;elsecnt1:=cnt1+1;end if;end if;end if;end process;clkout<=clk1;end Behavioral;第二个程序代码如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--use IEEE.NUMERIC_STD.ALL;-- Uncomment the following library declaration if instantiating -- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity light isport(clk:in std_logic;light:out std_logic_vector(7 downto 0));end light;architecture Behavioral of light istype state_type is(a,b,c,d,e,f,g,h);signal state:state_type; beginprocess(clk)beginif clk'event and clk='1' then case state iswhen a=>state<=b;when b=>state<=c;when c=>state<=d;when d=>state<=e;when e=>state<=f;when f=>state<=g;when g=>state<=h;when others=>state<=a; end case;end if;end process;process(state)begincase state iswhen a=>light<="00000001"; when b=>light<="00000010"; when c=>light<="00000100"; when d=>light<="00001000"; when e=>light<="00010000"; when f=>light<="00100000"; when g=>light<="01000000"; when h=>light<="10000000"; end case;end process;end Behavioral;第三个程序代码如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--use IEEE.NUMERIC_STD.ALL;-- Uncomment the following library declaration if instantiating-- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity light_f isPort ( clk : in STD_LOGIC;light1 : out STD_LOGIC_VECTOR (7 downto 0));end light_f;architecture Behavioral of light_f iscomponent fenpinport(clk:in std_logic;clkout:out std_logic);end component;component lightport(clk:in std_logic;light:out std_logic_vector(7 downto 0));end component;signal f:std_logic;beginu1:fenpin port map(clk=>clk,clkout=>f);u2:light port map(clk=>f, light(7 downto 0)=>light1(7 downto 0)); end Behavioral;。
基于EP2C8Q208C8(VHDL)芯片的流水灯程序
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity light isPort ( clk : in STD_LOGIC;rst : in STD_LOGIC;LED_RUN : out STD_LOGIC_VECTOR (7 downto 0)); end light;architecture Behavioral of light issignal cnt: STD_LOGIC_VECTOR(25 downto 0);signal LED: STD_LOGIC_VECTOR(7 downto 0);beginprocess(clk,rst)variable step: integer range 0 to 19;beginif(rst='0')thenLED<="11111111";step:=0;cnt<=(others=>'0');elsif(clk'event and clk='1')thenif(cnt="100110001001011010000000")thencase step iswhen 0=>LED<=(others=>'0');when 1=>LED<=(0=>'0',others=>'1');when 2=>LED<=(1=>'0',others=>'1');when 3=>LED<=(2=>'0',others=>'1');when 4=>LED<=(3=>'0',others=>'1');when 5=>LED<=(4=>'0',others=>'1');when 6=>LED<=(5=>'0',others=>'1');when 7=>LED<=(6=>'0',others=>'1');when 8=>LED<=(7=>'0',others=>'1');when 9=>LED<=(0=>'0',1=>'0',others=>'1');when 10=>LED<=(1=>'0',2=>'0',others=>'1');when 11=>LED<=(2=>'0',3=>'0',others=>'1');when 12=>LED<=(3=>'0',4=>'0',others=>'1');when 13=>LED<=(4=>'0',5=>'0',others=>'1');when 14=>LED<=(5=>'0',6=>'0',others=>'1');when 15=>LED<=(6=>'0',7=>'0',others=>'1');when 16=>LED<=(3=>'0',4=>'0',others=>'1');when 17=>LED<=(2=>'0',5=>'0',others=>'1');when 18=>LED<=(1=>'0',6=>'0',others=>'1');when 19=>LED<=(0=>'0',7=>'0',others=>'1');end case;step:=step+1;if(step>=20)thenstep:=0;end if;cnt <=(others=>'0');elsecnt<=cnt+1;end if;end if;end process;LED_RUN<=LED;end Behavioral;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于VHDL流水灯的设计电子信息科学与技术刘敏何磊成江波一、设计内容流水灯是一串按一定的规律像流水一样连续闪亮,流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。
流水灯控制可用多种方法实现,但对现代可编程控制器而言,基于EDA技术的流水灯设计也是很普遍的。
要求采用可编程逻辑器件实现一个流水灯控制电路,12个LED灯能连续发出4种不同的流水显示形式。
彩灯控制器的第1种花样为彩灯按顺时针方向逐次点亮;第2种花样为彩灯按逆时针方向逐次点亮,然后全灭全亮;第3种花样为彩灯两边同时亮1、2、3、4、5、6个逐次向中间移动再散开;第4种花样为彩灯连续交叉闪烁。
多个花样自动变换,循环往复。
二、设计方案彩灯是由FPGA板上的LED灯代替,有以下4种闪烁效果1.彩灯按顺时针方向逐次点亮。
2.彩灯按逆时针方向逐次点亮,然后全灭全亮。
3.彩灯两边同时亮1、2、3、4、5、6个逐次向中间移动再散开。
4.彩灯连续交叉闪烁。
本控制电路采用VHDL语言设计。
运用自顶而下的设计思想,按功能逐层分割实现层次化设计。
根据多路彩灯控制器的设计原理,分别对应彩灯的四种变化模式、利用VHDL语言实现该功能.三、系统框图四、流水灯设计程序library IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_unsigned.all;entity led1 isport(sysclk: in std_logic;dout: out std_logic_vector(11 downto 0) );end led1;architecture jgt of led1 issignal cnt : std_logic_vector ( 7 downto 0);--variable count:integer RANGE 0 TO 7;signal count : std_logic_vector(5 DOWNTO 0);beginprocess(sysclk)beginif ( sysclk'event and sysclk = '1') thencnt <= cnt + 1;if (cnt = "11110111") thencnt <= "00000000" ;count <=count+1;end if ;end if;end process;process (count)begincase count iswhen "000000" =>dout <= "111111111110";when "000001" =>dout <= "111111111101";when "000010" =>dout <= "111111111011";when "000011" =>dout <= "111111110111";when "000100" =>dout <= "111111101111";when "000101" =>dout <= "111111011111";when "000110" =>dout <= "111110111111";when "000111" =>dout <= "111101111111";when "001000" =>dout <= "111011111111";when "001001" =>dout <= "110111111111";when "001010" =>dout <= "101111111111";when "001011" =>dout <= "011111111111";when "001100" =>dout <= "101111111111";when "001101" =>dout <= "110111111111";when "001110" =>dout <= "111011111111";when "001111" =>dout <= "111101111111";when "010000" =>dout <= "111110111111";when "010001" =>dout <= "111111011111";when "010010" =>dout <= "111111101111";when "010011" =>dout <= "111111110111";when "010100" =>dout <= "111111111011";when "010101" =>dout <= "111111111101";when "010110" =>dout <= "111111111110";when "010111" =>dout <= "111111111111";when "011000" =>dout <= "000000000000";when "011001" =>dout <= "011111111110";when "011010" =>dout <= "101111111101";when "011011" =>dout <= "110111111011";when "011100" =>dout <= "111011110111";when "011101" =>dout <= "111101101111";when "011110" =>dout <= "111110011111";when "011111" =>dout <= "111101101111";when "100000" =>dout <= "111011110111";when "100001" =>dout <= "110111111011";when "100010" =>dout <= "101111111101";when "100011" =>dout <= "011111111110";when "100100" =>dout <= "001111111100";when "100101" =>dout <= "110011110011";when "100110" =>dout <= "111100001111";when "100111" =>dout <= "110011110011";when "101000" =>dout <= "001111111100";when "101001" =>dout <= "000111111000";when "101010" =>dout <= "111000000111";when "101011" =>dout <= "000111111000";when "101100" =>dout <= "000011110000";when "101101" =>dout <= "111100001111";when "101110" =>dout <= "000001100000";when "101111" =>dout <= "000000111111";when "110000" =>dout <= "010*********";when "110001" =>dout <= "101010101010";when "110010" =>dout <= "010*********"; when "110011" =>dout <= "101010101010"; when "110100" =>dout <= "010*********"; when "110101" =>dout <= "101010101010"; when "110110" =>dout <= "010*********";when "110111" =>dout <= "101010101010";when "111000" =>dout <= "010*********"; when "111001" =>dout <= "101010101010"; when "111010" =>dout <= "010*********";when "111011" =>dout <= "101010101010";when "111100" =>dout <= "010*********";when "111101" =>dout <= "101010101010";when "111110" =>dout <= "010*********";when "111111" =>dout <= "101010101010";when others=>null;end case;end process;end jgt;五、系统仿真与调试1.仿真波形图通过QuartusII软件,我们进行了仿真,其仿真波形如下图:图一:仿真波形图由设计要求可知,本设计要求采用可编程逻辑器件实现一个流水灯控制电路,12个LED 灯能连续发出4种不同的流水显示形式。