一.课程设计内容(所有字体用小四宋体不加粗)
1 编写vhdl程序进行跑马灯及键盘控制。
2 编写vhdl程序进行步进电机的转速控制。
3 根据所用芯片设计外围电路。
4 电路焊接。
5 程序**入所焊电路进行系统软硬件综合调试。
二.课程设计目的。
通过编写vhdl程序,结合硬件电路设计,实现跑马灯,键盘,数码管及直流电机转速等外设的控制。经过本次课程设计,能够将所学专业理论知识进行综合实际运用,锻炼学生的动手能力以及提高学生的综合专业素质。
三.课程设计器材清单。
8个二极管、9个220ω的电阻、1个整流二极管in个三端稳压集成电路(+5v)lm个100μf/25v的电容、1个三端稳压芯片(+3.3v)lm根芯片插槽、1个32768hz无源晶振、1个103瓷片电容、2个1m的电阻、1个14脚的插槽、1个74hc04n芯片、1个10脚**口;8个5.1k的电阻、8个按键、1个24脚的插槽、1个七段数码管; 4个330ω的电阻、4个npn型的三极放大管、1个16脚的插槽、1个16脚的插槽、1个uln2003a芯片 、一个步进电机、若干细导线。
四.课程设计硬件电路。
五.程序清单。
1)跑马灯的程序:
library ieee;
use use
entity pmd8 is
port(clk,rst,control : in std_logic;
led : out std_logic_vector(7 downto 0));
end;architecture one of pmd8 is
signal lamp : std_logic_vector(7 downto 0);
signal count : std_logic_vector(2 downto 0);
signal n : integer range 0 to 16384;
signal clk_out : std_logic;
beginpo1 : process(clk)
beginif clk'event and clk='1' then
if n=16383 then clk_out<=not clk_out;n<=0;
else n<=n+1;
end if;
end if;
end process;
po2 : process(clk_out,rst,control)
beginif rst='1' then lamp<=(others=>'0');count<="000";
elsif clk_out'event and clk_out='1' then
if control='0' then count<=count+1;
else count<=count-1;
end if;
end if;
if rst='0' then
case count is
when "000" =lamp<="00000001";
when "001" =lamp<="00000010";
when "010" =lamp<="00000100";
when "011" =lamp<="00001000";
when "100" =lamp<="00010000";
when "101" =lamp<="00100000";
when "110" =lamp<="01000000";
when "111" =lamp<="10000000";
when others=>null;
end case;
end if;
end process ;
led(7 downto 0)<=lamp(7 downto 0);
end; 2)按键控制数码管的程序:
library ieee;
use use
entity dsg7 is
port(clk : in std_logic;
key : in std_logic_vector(7 downto 0);
led7 : out std_logic_vector(6 downto 0));
end;architecture one of dsg7 is
signal led7s : std_logic_vector(6 downto 0);
signal n : integer range 0 to 16384;
signal clk_out : std_logic;
beginpo1 : process(clk)
beginif clk'event and clk='1' then
if n=16383 then clk_out<=not clk_out;n<=0;
else n<=n+1;
end if;
end if;
end process;
po2 : process(key)
begincase key is
when "00000001" =led7s <=0000110" ;
when "00000010" =led7s <=1011011" ;
when "00000100" =led7s <=1001111" ;
when "00001000" =led7s <=1100110" ;
when "00010000" =led7s <=1101101" ;
when "00100000" =led7s <=1111101" ;
when "01000000" =led7s <=0000111" ;
when "10000000" =led7s <=1111111" ;
when others =>led7s <=0111111" ;
end case;
end process;
po3 : process(clk_out)
beginif clk_out'event and clk_out='1' then
led7<=led7s;
end if;
end process;
end; 3)控制步进电机转速的程序:
library ieee;
use entity control_sm is
port(clk,reset : in std_logic;
outputs : out std_logic_vector(7 downto 0));
end control_sm;
architecture one of control_sm is
type sm_st is (s0,s1,s2,s3);
signal current_state,next_state : sm_st;
signal q : std_logic_vector(7 downto 0);
beginpo1 : process(reset,clk)
beginif reset='1' then current_state<=s0;
elsif clk='1' and clk'event then
current_state<=next_state;
end if;
end process;
po2 : process(current_state)
begincase current_state is
when s0 =>q<="10000111";
next_state<=s1;
when s1 =>q<="01001011";
next_state<=s2;
when s2 =>q<="00101101";
next_state<=s3;
when s3 =>q<="00011110";
next_state<=s0;
end case;
end process;
po3 : process(clk)
beginif clk='1' and clk'event then
outputs(7 downto 0)<=q(7 downto 0);
end if;
end process;
end六.课程设计小结。
通过此次过程设计,自己会了些简单的程序编写。虽然此次硬件电路做得并不完美,但两个人也一起努力,共同学习,尽力做好。与此之时,不管是程序编写还是硬件电路设计,自己日后还是得多多钻研和锻炼。
EDA技术课程设计报告
课程设计任务书。设计题目1 数码管显示数字钟设计。院 系 分管领导 教研室主任指导教师 2017年 6月 23日。目录。第1章引言 1 第2章电路原理 2 第3章程序设计 3 3.1 顶层模块设计 3 3.2 时钟分频模块设计 3 3.3 按键驱动模块设计 4 3.4 时钟计数模块设计 4 3.5 ...
EDA技术课程设计
黄冈师院物科院。eda技术 课程设计报告。项目名称 多功能彩灯控制电路设计。专业年级 电子信息工程2009级。学号 201122220324 学生姓名 易鹏。指导教师 冯杰。报告完成日期 2011 年 12 月 25日。第一章绪论。1.1系统背景。1.1.1 eda技术特点及在电子技术中的应用 ed...
EDA技术课程设计
课程设计要求 1 eda技术 课程设计成绩为 eda技术 理论课成绩一部分,课程设计不合格者,理论课成绩为不及格 2 每个设计课题可从给定设计中任选一题,由1 3人组成,3 课程设计格式要求见本文档后面附录部分 4 课程设计成绩 文档内容 格式成绩 50 答辩成绩 50 5 每个设计课题组 员均须参...