当前位置:文档之家› VHDL课程设计报告

VHDL课程设计报告

VHDL课程设计报告
VHDL课程设计报告

VHDL课程设计报告

一、题目要求

(1)、EDA实验板组装调试

参照提供的EDA实验板电路原理图、PCB图以及元器件清单进行电路板的组装,组装过程中要求能读懂电路原理图,了解各部分电路工作的原理。

电路板组装完成后,编写以下三个小程序进行电路板测试:

1、流水灯程序

编写一个流水灯程序,使实验板上DS2—DS13十二个LED依次循环点亮。

2、数码管动态扫描程序

了解BCD—七段锁存译码器CD4511的工作原理及数码管动态扫描技术,编写一个程序,使EDA实验板上的8位数码管由“0000 0000”按一定的频率自加一直到“9999 9999”,然后归零不断循环以上过程。

3、矩阵键盘扫描程序

了解矩阵键盘扫描原理,编写一程序,当按下实验板上十六个按键任一键,数码管上显示相应键值1—16。

以上测试程序先经软件仿真通过后下载到实验板上进行测试,观察实验结果,若与预期设计不符则应对软、硬件进行细心检查,排除故障。

完成以上电路板组装且调试通过后可进行第二部分红外遥控系统的设计。

(2)、红外遥控系统的设计

红外遥控系统由发射编码和接收解码两个部分组成,本课程设计要求制作发射编码电路板(遥控器)以及编写程序在EDA实验板上实现接收解码,具体说明如下:

1、发射编码部分

发射编码部分要求使用指定的元器件在万用板上完成红外遥控器的制作,该部分电路原理图参照《PT2248数据手册》,制作前请详细阅读《红外遥控器制作说明》,制作时要求元器件在万用板上排列整齐,布局合理,焊接良好,各按键功能正常,均能发送编码。

2、接收解码部分

接收解码用VHDL语言编写程序,在EDA实验板上实现解码,要求具有以下功能:

(1)基本要求:

(a)将一体化红外接收解调器的输出信号解码(12个单击键、6个连续键,单击键编号为7-18,连续键编码为1-6),在EDA实验板上用七段数码管显示出来;

(b)当按下遥控器1—6号连续键时,在EDA实验板上用发光二极管点亮作为连续键按下的指示,要求遥控器上连续键接下时指示灯点亮,直到松开按键时才熄灭,用于区别单击键。

(c)EDA实验板上设置四个按键,其功能等同于遥控器上的1—4号按键,当按下此四个按键时七段数码管分别对应显示“1”、“2”、“3”、“4”。

(d)每当接收到有效按键时,蜂鸣器会发出提示音。

(2)扩展功能:(能完成的加分)

通过遥控器跳线改变用户码,EDA实验板上用三个发光二极管正确显示发送端的用

户码。

二、设计分析

1)、流水灯程序:

测试各发光二极管的程序。程序中只要依次给要闪亮的灯输入低电平即可。

2)、数码管动态扫描程序

测试8位数码管的程序。CD4511可以将4位二进制编码转换成对应的7段显像管编码输出。真值表如下:

程序中只要将8位数码管显示控制端全部置1,即可保持数码管显示状态,依次将“0000”-“1001”输送给CD4511就可以实现对8位数码管的动态扫描。时钟由晶振分频后得到。

3)、矩阵键盘扫描程序

测试键盘输入的程序。程序实现了显示0-4输入的输出显示。键盘输入行由“0111”到“1110”,列也是由“0111”到“1110”,直接翻译成对应的二进制编码输入CD4511译码显示。

4)、接收译码程序

本次实验的最主要程序。发射端编码方式已经在《红外遥控器制作说明及编码规则简要说明》中给出,要接收发射端发射的编码最关键的问题是发射段频率和接收段频率不一致的现象。发射端频率为38KHz,程序中设计的接收端频率为2.048MHz的8分频,即8KHz。发射端每四个周期代表一个二进制编码,时间为1/38KHz*16*4=1.684ms,四个周期的时间换算成接收端周期数为 1.684ms/(1/8KHz)=13.47。一个周期占13.47/4=3.37,三个周期占13.47/4*3=10.1,由于编码中一个周期的低电平代表“1”,三个周期的低电平代表“0”,再考虑到同步的问题,取(10.1+3.37)/2=6.7 7作为判断“0”、“1”的分界线,即当检测到

超过7个接收端周期的低电平后即可认为接收到的是“0”,否则为“1”。

翻译出编码信号后根据编码的规则,分析用户和所显示的数字即可。

三、系统模块的划分以及各模块的功能描述

程序采用单进程,划分为接收编码信号及翻译模块和输出显示模块。

接收编码信号模块分为从键盘接收信号和从发射板接收信号,从键盘接收到的信号直接翻译对应的二进制编码输出到显示模块;从发射板接收到的信号需要进行译码,每次接收13位周期的信号,如果前7个周期都为低电平,即可认为接收到“1”,否则为“0”。译码后根据编码的规则进行翻译,翻译成对应的二进制编码输出。当检测到收到的信号为1~6时,相应的彩灯发亮指示连续按键。

输出显示模块主要是对每一位显像管分别的输出进行控制,根据翻译出的二进制编码分别将各位的编码输入到CD4511,驱动显像管显示。

四、程序仿真

(1)键盘仿真

各信号描述:

Qrset:复位信号

Qinf:串行信号输入信号

Qck:时钟信号

Qjian:

键盘输入信号(7代表输入0111,即输入1,同理B代表2,D代表3,E代表4)Qbit:片选信号,指示某个显像管显示

Qnum:二进制编码信号,输入CD4511编码

Qcon:彩灯显示信号

Qusr:用户信号(程序中全部将用户设为111)

Qbeep:蜂鸣信号

此图是测试键盘输入的仿真,键盘依次输入7、B、D、E(即1,2,3,4)在二进制编码端识别出1、2、3、4。相应的彩灯也被置为低电平

(2)发射板仿真

各信号含义与上面相同。

该仿真是测试接收发射端信号的仿真。图中仿真发射端编码为11110010000,从仿真结果可以看到。Qbit片选信号正确的在两个显像管间切换。Qnum也根据片选信号的不同相应的显示0和1(显示十位时是0,个位为1)。Qcon(6)是连续信号的显示灯,接收到1后该显示灯发光一段时间,之后会熄灭,因为连续信号会不停的发送编码信号,所以显示效果为连续灯常亮;而其他非连续信号输入时该灯不会亮。Qcon(5 downto 0)正确显示了接收到1信号时应该亮的指示灯。Quser显示用户为111。

五、设计体会及心得

本次实验锻炼了我们动手的能力,进一步熟练了焊接技巧。对布板的重要性有了更深刻的认识,基本消除了以前常发生的飞线现象。

最重要的是本次实验让我们对信号远程传输的发射和接收有了具体的了解,对如何使用VHDL来实现硬件的功能有了初步了解。掌握了CD4511、74LS224、74HC4040、max7000等芯片的用法和各管脚的分布。

实验中得到各位老师的帮助,尤其是反复的取拿器件,浪费了老师很多时间,再此表示感谢~~

六、源程序

--XIANSHI.VHD 负责各显像管的显示

library ieee;

use ieee.std_logic_1164.all;

entity xianshi is

port (

acode : in std_logic_vector (4 downto 0); --翻译出的编码

aclk : in std_logic; --时钟信号

abit : out std_logic_vector(1 downto 0); --片选信号

anum : out std_logic_vector (3 downto 0) --编码输入CD4511

);

end xianshi;

architecture behav of xianshi is

begin

process (aclk)

variable a : std_logic ;

begin

if rising_edge (aclk) then

a:=not a;

if a='0' then

anum <= "000" & acode(4); --十位

abit <= "10";

else

anum <= acode(3 downto 0); --个位

abit <= "01";

end if;

end if;

end process;

end behav;

--OK.VHD 提供上层接口

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity ok is

port (

qclk : in std_logic;

qreset : in std_logic;

qinf : in std_logic;

qjian : in std_logic_vector(3 downto 0);

qbit : out std_logic_vector (1 downto 0);

qnum : out std_logic_vector (3 downto 0);

qcon : out std_logic_vector (6 downto 0);

quser: out std_logic_vector (2 downto 0);

qbeep: out std_logic);

end ok;

architecture behav of ok is

component fenxi is

port (

clk : in std_logic;

inf : in std_logic;

reset : in std_logic;

jian : in std_logic_vector(3 downto 0);

code : out std_logic_vector(4 downto 0);

con : out std_logic_vector (6 downto 0);

user: out std_logic_vector (2 downto 0);

beep: out std_logic );

end component fenxi;

component xianshi is

port (

acode : in std_logic_vector (4 downto 0);

aclk : in std_logic;

abit : out std_logic_vector(1 downto 0);

anum : out std_logic_vector (3 downto 0)

);

end component xianshi;

signal s : std_logic_vector(4 downto 0);

begin

t1: fenxi port map(

qclk,qinf,qreset,qjian,s,qcon,quser,qbeep

);

t2: xianshi port map(

s,qclk,qbit,qnum

);

end behav;

--FENXI.VHD

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity fenxi is

port (

clk : in std_logic; --时钟信号

inf : in std_logic; --串行输入信号

reset : in std_logic; --复位信号

jian : in std_logic_vector(3 downto 0); --键盘输入信号

code : out std_logic_vector(4 downto 0); --二进制编码,输入CD4511显像

con : out std_logic_vector (6 downto 0); --彩灯控制信号

user: out std_logic_vector (2 downto 0); --用户端信号

beep: out std_logic ); --蜂鸣信号

end fenxi;

architecture behav of fenxi is

type statetype is (s0, s1, s2,sk,t0,action);

signal state : statetype ;

constant beeptime : integer := 28 ;

begin

st: process (clk,inf)

variable cnt1,cnt2,cnta : integer range 0 to 30; -- ,cnta

variable reg : std_logic_vector(11 downto 0);

variable temp : std_logic_vector (4 downto 0);

variable tempcon : std_logic_vector (6 downto 0);

begin

-------------------------------------------------------------------------------------------------

-- 检测键盘输入和开始远程端接收部分

if reset= '1' then

state <= s0; code <= "00000"; con <= "1111111"; user <="111";

elsif rising_edge (clk) then

case state is

when s0 =>

if inf = '0' then

reg:="000000000000"; tempcon:="1111111"; temp:="00000";

cnt1:=0; cnt2:=0; cnta := 0;

state <= sk;

elsif jian = "0111" then

code <= "00001"; beep<='1'; con <= "1011111"; user <="111";

elsif jian = "1011" then

code <= "00010"; beep<='1'; con <= "1101111"; user <="111";

elsif jian = "1101" then

code <= "00011"; beep<='1'; con <= "1110111"; user <="111";

elsif jian = "1110" then

code <= "00100"; beep<='1'; con <= "1111011"; user <="111";

else

state <= s0;beep<='0';con (6) <= '1';

end if;

-------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------- ----译码部分,检测发射端的发射信号

when sk =>

if inf = '0' then

state <= s1;

else

state <= sk;

end if;

when s1 =>

if inf = '0' then

cnt1:=cnt1 + 1;

state <= s1;

elsif inf='1' then

state <= s2;

end if;

when s2 =>

cnt2:=cnt2 + 1; -- 计算已记多少位数

if cnt1 < 7 then

reg:=reg(10 downto 0) & '0';

else

reg:=reg(10 downto 0) & '1';

end if;

if cnt2 = 12 then state <= t0;

else cnt1:= 0 ;

state <= sk;

end if;

-------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------- --译码部分,对译码之后的信号进行相应的译码输出

when t0 =>

beep <= '1' ;

case reg(8 downto 0) is

--continuous 1~6------------

when "100100000" => --1

temp := "00001";

when "100010000" => --2

temp := "00010";

when "100001000" => --3

temp := "00011";

when "100000100" => --4

temp := "00100";

when "100000010" => --5

temp := "00101";

when "100000001" => --6

temp := "00110";

---single 7~18---------

when "010100000" => --7

temp := "00111";

when "010010000" => --8

temp := "01000";

when "010001000" => --9

temp := "01001";

when "010000100" => --10

temp := "10000";

when "010000010" => --11

temp := "10001";

when "010000001" => --12

temp := "10010";

when "001100000" => --13

temp := "10011";

when "001010000" => --14

temp := "10100";

when "001001000" => --15

temp := "10101";

when "001000100" => --16

temp := "10110";

when "001000010" => --17

temp := "10111";

when "001000001" => --18

temp := "11000";

when others =>

temp := "00000";

end case;

user <= reg(11 downto 9);

tempcon := not reg(8) & not reg (5 downto 0);

state <= action ;

--------------------------------------------------------------------------------------------------

when action =>

con <= tempcon;

code <= temp;

cnta := cnta+1;

if cnta = beeptime then

beep <= '0';

state <= s0 ;

else

state <= action ;

end if;

when others =>

state <= s0;

end case;

end if;

end process st;

end behav;

VHDL与数字系统课程设计

课程设计报告 实践课题:VHDL与数字系统课程设计 学生:XXX 指导老师:XXX、XXX 系别:电子信息与电气工程系 专业:电子科学与技术 班级:XXX 学号:XXX

一、设计任务 用VHDL设计一个简单的处理器,并完成相关的仿真测试。 .设计要求: 图1是一个处理器的原理图,它包含了一定数量的寄存器、一个复用器、一个加法/减法器(Addsub),一个计数器和一个控制单元。 图1 简单处理器的电路图 数据传输实现过程:16位数据从DIN输入到系统中,可以通过复用器分配给R0~R7和A,复用器也允许数据从一个寄存器传通过Bus送到另外一个寄存器。 加法和减法的实现过程:复用器先将一个数据通过总线放到寄存器A中,然后将另一个数据放到总线上,加法/减法器对这两个数据进行运算,运算结果存入寄存器G中,G中的数据又可根据要求通过复用器转存到其他寄存器中。 1)Rx ←[Ry] :将寄存器Ry中的内容复制到Rx; 2)Mvi Rx,#D :将立即数存入寄存器Rx中去。 所有指令都按9位编码(取自DIN的高9位)存储在指令存储器IR中,编编码规则为IIIXXXYYY,III表示指令,XXX表示Rx寄存器,YYY表示Ry寄存器。立即数#D是在mvi指令存储到IR中之后,通过16位DIN输入

的。 有一些指令,如加法指令和减法指令,需要在总线上多次传输数据,因此需要多个时钟周期才能完成。控制单元使用了一个两位计数器来区分这些指令执行的每一个阶段。当Run信号置位时,处理器开始执行DIN输 时间 指令 T0T1T2T3 (mv):I0 (mvi):I1 (add):I2 (sub):I3 IR in IR in IR in IR in RY out,RX in,Done DIN out,RX in,Done RX out,A in RX out,A in ---- ---- RY out,G in,Addsub RY out,G in,Addsub ---- ---- G out,RX in,Done G out,RX in,Done 二、实现功能说明 2.1 mv Rx,Ry 实现的功能:将寄存器Rx的值赋给寄存器Ry(以mv R0, R5为例) (1 )计数器为“00”时,指令寄存器的置位控制信号输入端IRin=1有效,将DIN输入的数据的高9位锁存。 置位的控制信号如图3加粗黑线所示。 图3 (2)计数器为“01”时,首先控制单元根据设计器为“00”时输入的指令,向复用器发出选通控制信号,复用器根据该控制信号让R5的值输出到总线上,然后控制单元控制寄存器R0将总线上的值锁存,完成整个寄存器对寄存器的赋值过程。置位的控制信号和数据流如图4加粗黑线所示。 图4

数字逻辑电路(数电)课程设计_电子秒表_VHDL实现(含完整源代码!!)

电子科技大学 UNIVERSITY OF ELECTRONIC SCIENCE AND TECHNOLOGY OF CHINA 数字逻辑设计 实验报告 实验题目:电子秒表 学生姓名: 指导老师:

一、实验内容 利用FPGA设计一个电子秒表,计时范围00.00 ~ 99.00秒,最多连续记录3个成绩,由两键控制。 二、实验要求 1、实现计时功能: 域值范围为00.00 ~ 99.00秒,分辨率0.01秒,在数码管上显示。 2、两键控制与三次记录: 1键实现“开始”、“记录”等功能,2键实现“显示”、“重置”等功能。 系统上电复位后,按下1键“开始”后,开始计时,记录的时间一直显示在数码管上;按下1键“记录第一次”,次按1键“记录第二次”,再按1键“记录第三次”,分别记录三次时间。 其后按下2键“显示第一次”,次按2键“显示第二次”,再按2键“显示第三次”,数码管上分别显示此前三次记录的时间;显示完成后,按2键“重置”,所有数据清零,此时再按1键“开始”重复上述计时功能。 三、设计思路 1、整体设计思路 先对按键进行去抖操作,以正确的得到按键信息。 同时将按键信息对应到状态机中,状态机中的状态有:理想状态、开始状态、3次记录、3次显示、以及其之间的7次等待状态。 因为需要用数码管显示,故显示的过程中需要对数码管进行片选和段选,因此要用到4输入的多路选择器。 在去抖、计时、显示的过程中,都需要用到分频,从而得到理想频率的时钟信号。 2、分频设计 该实验中有3个地方需要用到分频操作,即去抖分频(需得到200HZ时钟)、计时分频(需得到100HZ时钟)和显示分频(需得到25kHZ时钟)。 分频的具体实现很简单,需首先算出系统时钟(50MHZ)和所需始终的频率比T,并定义一个计数变量count,当系统时钟的上升沿每来到一次,count就加1,当count=T时就将其置回1。这样只要令count=1~T/2时clk=‘0’,count=T/2+1~T时clk=‘1’即可。 3、去抖设计 由于用按键为机械弹性开关,故当机械触点断开、闭合时,按键开关在闭合时不会马上稳定地接通,在断开时也不会马上断开,而是在闭合及断开的瞬

VHDL课程设计-PS2键盘

VHDL课程设计-PS2键盘

目录 一、课程设计的目的与任务 (3) 二、课程设计题目 (3) 1、指定题目: (3) 2、自选题目: (3) 三、课程设计的内容与要求 (3) 1、设计内容 (4) 2、设计要求 (4) 四、实验仪器设备 (4) 五、设计方案 (4) 1、PS2解码 (4) 2、设计思路 (6) 3、模块设计 (7) 4、各模块分析 (8) (1)PS2时钟检测模块 8 (2)PS2解码模块 10 (3)PS2组合模块 12 (4)控制LED模块 14 (5)PS2总的组合模块 16 六、综合与仿真 (17) 1、综合 (17) 2、仿真 (18) (1)电平检测模块仿真 (18) (2)LED灯控制模块仿真 (18)

(3)PS2_module总模块仿真 (19) 七、硬件下载 (23) 八、心得体会 (24) 九、参考文献 (24) 一、课程设计的目的与任务 (1)熟练掌握EDA工具软件QuartusII的使用; (2)熟练用VHDL硬件描述语言描述数字电路; (3)学会使用VHDL进行大规模集成电路设计; (4)学会用CPLD\FPGA使用系统硬件验证电路设计的正确性; (5)初步掌握EDA技术并具备一定的可编程逻辑芯片的开发能力; 二、课程设计题目 1、指定题目: 0 :多功能计数器;1 :数字秒表;2 :简易数字钟;3 :简易频率计; 4 :彩灯控制器; 5 :交通灯控制器; 6 :四路智力竞赛抢答器; 7 :简易微波炉控制器;8 :表决器;9 :数字密码锁; 我的的学号尾数是2,所以我要做的题目是简易数字钟。由于我之前已经学过Verilog HDL和VHDL,所以简易数字钟相对于我比较简单,我完成了简易数字钟并验收后,再选择了另一个自选题目来完成。 简易数字钟:设计一个以“秒”为基准信号的简易数字钟,显示时、分、秒,同时可实现整点报时和清零(我已经完成,而且已经验收了)。 2、自选题目: 在完成了数字钟的设计后,我选择了另一个设计的题目,那就是PS2键盘扫描。所以这次课程设计我的报告主要详细写的是PS2键盘扫描的程序,而不是简易数字钟。 PS键盘扫描:设计一个PS键盘扫描程序,能接受键盘的输入时钟和数据,区别哪一个键输入,同时解译通码和断码,使用LED灯来显示收到的数据。三、课程设计的内容与要求

VHDL语言与EDA课程设计

湖南人文科技学院 课程设计报告课程名称: VHDL语言与EDA课程设计 ~ 设计题目:出租车自动计价器设计 系别: 专业: 班级: 学生姓名: 学号: 起止日期: 2011年6月13日~2011年6月26日 $ 指导教师: 教研室主任:

摘要 随着我国社会经济的全面发展,各大中小城市的出租车营运事业发展迅速,出租车已经成为人们日常出行选择较为普遍的交通工具。出租车计价器是出租车营运收费的专用智能化仪表,是出租车市场规范化、标准化以及减少司机与乘客之间发生纠纷的重要设备。一种功能完备、简单易用、计量准确的出租车计价器是加强出租车行业管理、提高服务质量的必备品。根据预定的设计要求和设计思路,我们使用VHDL硬件描述语言设计了一个实际的基于Altera FPGA芯片的出租车自动计价器系统,介绍了该系统的电路结构和程序设计。通过在软件中编译和下载测试,得到了仿真波形和关键的设计结果。经过在实验箱上进行硬件测试,证明该出租车计价系统具有实用出租车计价器的基本功能,如能进一步完善,将可以实用化和市场化。 关键词:出租车自动计价器;VHDL; FPGA ;

目录 设计要求 (1) 1、方案论证与对比 (1) 方案一 (1) 方案二 (2) 两种方案的对比 (2) 2、实验步骤和设计过程 (2) 计程模块 (2) 等待计时模块 (2) 计费模块 (3) 3、调试与操作说明 (3) 中的VHDL程序 (3) 程序的编译与及仿真波形 (6) 程序的下载与功能的测试 (7) 4、课程设计心得体会 (9) 5、元器件及仪器设备明细 (10) 6、参考文献 (11) 7、致谢 (12)

VHDL课程设计PS键盘

目录 一、课程设计的目的与任务 (1)熟练掌握EDA工具软件QuartusII的使用;

(2)熟练用VHDL硬件描述语言描述数字电路; (3)学会使用VHDL进行大规模集成电路设计; (4)学会用CPLD\FPGA使用系统硬件验证电路设计的正确性; (5)初步掌握EDA技术并具备一定的可编程逻辑芯片的开发能力; 二、课程设计题目 1、指定题目: 0 :多功能计数器; 1 :数字秒表; 2 :简易数字钟; 3 :简易频率计; 4 :彩灯控制器; 5 :交通灯控制器; 6 :四路智力竞赛抢答器; 7 :简易微波炉控制器; 8 :表决器;9 :数字密码锁; 我的的学号尾数是2,所以我要做的题目是简易数字钟。由于我之前已经学过Verilog HDL和VHDL,所以简易数字钟相对于我比较简单,我完成了简易数字钟并验收后,再选择了另一个自选题目来完成。 简易数字钟:设计一个以“秒”为基准信号的简易数字钟,显示时、分、秒,同时可实现整点报时和清零(我已经完成,而且已经验收了)。 2、自选题目: 在完成了数字钟的设计后,我选择了另一个设计的题目,那就是PS2键盘扫描。所以这次课程设计我的报告主要详细写的是PS2键盘扫描的程序,而不是简易数字钟。 PS键盘扫描:设计一个PS键盘扫描程序,能接受键盘的输入时钟和数据,区别哪一个键输入,同时解译通码和断码,使用LED灯来显示收到的数据。 三、课程设计的内容与要求 1、设计内容 (1)系统功能的分析; (2)实现系统功能的实际方案; (3)编写各功能模块的VHDL语言程序; (4)对各功能模块进行编译、综合、仿真、分析; (5)顶层文件设计 (6)对整个系统进行编译、综合、仿真、分析; (7)在CPLD\FPGA实验开发系统试验箱上进行硬件验证; (8)写实验报告;

跑马灯VHDL课程设计报告

跑马灯VHDL课程设计 一、设计任务 控制8个led进行花式显示,设计四种显示模式: 1.从左到右逐个点亮led; 2.从右到左逐个点亮led; 3.从两边到中间逐个点亮led; 4.从中间到两边逐个点亮led; 四种模式循环切换,由复位键rst控制系统的运行与停止. 二、设计过程 根据系统设计要求,采用状态机进行设计,状态机具有四种状态,每种状态完成一种显示模式四种状态间使用case语句进行切换. 程序如下: library ieee; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_1164.all; entity pmd is port( clk, rst: in std_logic; y: buffer std_logic_vector(7 downto 0)); end pmd; architecture behave of pmd is type states is (state0, state1, state2, state3); signal state: states;

begin process (clk, rst) begin if rst='1' then y<="00000000" ; state <= state0; elsif (clk'event and clk='1') then case state is when state0 => if y="00000000" then y<="10000000";state <= state0; elsif y="10000000" then y<="01000000";state <= state0; elsif y="01000000" then y<="00100000";state <= state0; elsif y="00100000" then y<="00010000";state <= state0; elsif y="00010000" then y<="00001000";state <= state0; elsif y="00001000" then y<="00000100";state <= state0; elsif y="00000100" then y<="00000010";state <= state0; elsif y="00000010" then y<="00000001";state <= state1; end if; when state1 => if y="00000001" then y<="00000010";state <= state1; elsif y="00000010" then y<="00000100";state <= state1; elsif y="00000100" then y<="00001000";state <= state1; elsif y="00001000" then y<="00010000";state <= state1; elsif y="00010000" then y<="00100000";state <= state1; elsif y="00100000" then y<="01000000";state <= state1;

vhdl课程设计(电子钟+闹铃)

数字钟的设计 一、系统功能概述 (一)、系统实现的功能: 1、具有“时”、“分”、“秒”的十进制数字显示(小时从00 ~ 23)。 2、具有手动校时、校分、校秒的功能。 3、有定时和闹钟功能,能够在设定的时间发出闹铃声。 4、能进行整点报时。从59分50秒起,每隔2秒发一次低音“嘟”的信号,连续5次, 最后一次为高音“嘀”的信号。 (二)、各项设计指标: 1、显示部分采用的6个LED显示器,从高位至低位分别显示时、分、秒。 2、有一个设置调闹钟定时时间、正常时间的按钮,选择调的对象。 3、有三个按钮分别调时、分、秒的时间。 4、有一个按钮用作开启/关闭闹铃。 5、另外需要两个时钟信号来给系统提供脉冲信号,使时钟和闹钟正常工作,分别为1Hz、 1kHz的脉冲。 二、系统组成以及系统各部分的设计 1、系统结构描述//要求:系统(或顶层文件)结构描述,各个模块(或子程序)的功能描述;(一)系统的顶层文件: 1、顶层文件图:(见下页) 2、各模块的解释: (1)、7个输入量clk_1khz、clk_1hz、key_slt、key_alarm、sec_set、min_set、hour_set:其中clk_1khz为闹铃模块提供时钟,处理后能产生“嘟”、“嘀”和变化的闹铃声音;clk_1hz为计时模块提供时钟信号,每秒计数一次;key_slt选择设置对象:定时或正常时间;key_alarm能够开启和关闭闹铃;sec_set、min_set、hour_set用于设置时间或定时,与key_slt相关联。各按键输出为脉冲信号。 (2)、CNT60_A_SEC模块: 这个模块式将clk_1hz这个时钟信号进行60进制计数,并产生一个分钟的触发信号。该模块能将当前计数值实时按BCD码的格式输出。将该输出接到两位LED数码后能时时显示秒的状态。通过alarm_clk可以选择设置对象为时间还是定时值。在设置时间模式上,key上的一个输入脉冲可以将clk的输入信号加一。在设置定时模式上,key 上的脉冲只修改定时值,不影响时间脉冲clk的状态。 同时该模块具有两个输出口out_do、out_di来触发整点报时的“嘟”、“嘀”声音。 (3)、CNT60_A_MIN模块: 这个模块式将CNT60_A_SEC的输出信号进行60进制计数,并产生一个时位的触发信号。该模块能将当前计数值实时按BCD码的格式输出。将该输出接到两位LED数码后能时时显示分的状态。通过alarm_clk可以选择设置对象为时间还是定时值。在设置时间模式上,key上的一个输入脉冲可以将clk的输入信号加一。在设置定时模式上,key上的脉冲只修改定时值,不影响时间脉冲clk的状态。 同时该模块具有三个输出口out_do、out_di、out_alarm来触发整点报时的“嘟”、“嘀”、闹铃声音。

VHDL课程设计报告

湖南科技大学 信息与电气工程学院 课程设计任务书 20 —20 学年第学期 专业:学号:姓名: 课程设计名称: 设计题目: 完成期限:自年月日至年月日共周设计依据、要求及主要内容(可另加附页): 指导教师(签字): 批准日期:年月日

目录 一、摘要 二、VHDL语言介绍 三、设计的目的 四、设计内容 五、电路工作原理 六、主要程序及仿真结果 七、对本次设计的体会和建议 八、参考文献

一、摘要 人类社会已进入到高度发达的信息化社会。信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。电子信息产品随着科学技术的进步,其电子器件和设计方法更新换代的速度日新月异。实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,Electronics Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL语言设计一个电子数字钟,它的计时周期为24小时,显示满刻度为24时59分59秒。总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数和设置程序模块、比较器程序模块、三输入数据选择器程序模块、译码显示程序模块和拼接程序模块。并且使用软件进行电路波形仿真。 关键词:数字钟EDA VHDL语言 二、VHDL语言介绍 1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL 设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。 三、设计的目的 本项实验通过六十进制计数器和数字钟的设计与仿真,学习VHDL语言及VHDL文本输入设计方法,编写六十进制计数器和数字钟源程序,应用VMAX+plusII软件进HDL文本输入设计与波形仿真。熟练地运用数字系统的设计方法进行数字系统设计,能进行较复杂的数字系统设计,按要求设计一个数字钟。 四、设计内容 1、60进制计数器计数器 60进制计数器计数器是一个用以实现计数功能的时序部件,它不仅可用来及脉冲数,还常用作数子系统的定时、分频和执行数字运算以及其它特定的逻辑功能。计数器种类很多。按

VHDL课程设计

本科实验报告 实验名称:数字系统设计与实验(软件部分)

实验一 QuartusII9.1软件的使用 一、实验目的: 1、通过实现书上的例子,掌握QUARTUSII9.1软件的使用. 2、编程实现3-8译码电路以掌握VHDL组合逻辑的设计以及QUARTUSII9.1软件的使用。 二、实验内容 1.十进制加法计数器的VHDL文本及仿真 功能图: VHDL文本: library IEEE; use IEEE.std_logic_1164.all; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity count10 is port(clk,load,en:in std_logic; data_in:in std_logic_vector(3 downto 0); seg:out std_logic_vector(6 downto 0)); end count10; architecture beha of count10 is signal qout:std_logic_vector(3 downto 0); signal q_temp:std_logic_vector(3 downto 0); begin process(clk,load) begin if(load='1')then q_temp<=data_in; elsif(clk'event and clk='1')then

if(en='0')then qout<=qout; elsif(qout="1001")then qout<="0000"; else qout<=qout+1; end if; q_temp<=qout; end if; end process; process(q_temp) begin case q_temp is when"0000"=>seg<="1000000"; when"0001"=>seg<="1111001"; when"0010"=>seg<="0100100"; when"0011"=>seg<="0110000"; when"0100"=>seg<="0011001"; when"0101"=>seg<="0010010"; when"0110"=>seg<="0000010"; when"0111"=>seg<="1111000"; when"1000"=>seg<="0000000"; when"1001"=>seg<="0010000"; when others=>seg<="0001000"; end case; end process; end beha; 功能仿真流程及结果: 全编译通过后,进行仿真 新建波形文件,在其中添加所需节点。将clk设置为时钟信号,将en设置为高电平,将load 设置为低电平,将data_in设置为想要预置的数值。 运行Generate Functional Simulation Nest List命令产生能仿真的网标文件。点击Start Simulation开始模拟仿真 仿真结果:

VHDL课程设计报告---交通灯设计

课程设计 课程名称:交通灯设计. 学院:电气工程学院专业:测仪姓名:学号: 年级:级任课教师: 2012年 1月12日

电气工程学院 课程设计任务书 课题名称:交通灯控制器的设计 专业、班级:测控技术与仪器测仪班 指导教师: 20 年1 月2 日至20 年1 月13 日共2周 指导教师签名: 教研室主任签名: 分管院长签名:

一、课程设计内容 1.学习ALTERA公司的FPGA/CPLD的结构、特点和性能。 2.学习集成开发软件MAX+plus II/Quartus II的使用及设计过程。 3.熟悉EDA工具设计数字电路设计方法,掌握VHDL硬件描述语言设计方法。 4.根据给定题目设计数字电路,来加深对可编程逻辑器件的理解和掌握。 二、课程设计应完成的工作 1.在所选择器件内完成交通灯控制器的设计,要求设计完成后芯片具有交通灯控制器的全部功能、包括显示和操作接口。 2.交通灯控制器要求控制十字路口两道路的交通灯,两道路交替通行,每次通行时间可设定20——60秒之间,每个路口要求有前行、禁止、人行灯。 (根据实际设计进度考虑可以增加左右转向灯,等待和通行时间显示等)。 3.撰写设计说明书一份(不少于2000字),阐述系统的工作原理,软、硬件设计方法,重点阐述软件思路。说明书应包括封面、任务书、目录、摘要、正文、参考文献(资料)等内容,以及硬件电路综合图和软件程序清单等材料。 注:设计说明书题目字体用小三,黑体,正文字体用五号字,宋体,小标题用四号及小四,宋体,并用A4纸打印。 三、课程设计进程安排

四、设计资料及参考文献 1.康华光主编,《电子技术基础-数字部分》,高等教育出版社,1998。2.谭会生等主编,《EDA技术及应用》,西安电子科技大学出版社,2001 3.潘松等主编,《EDA技术实用教程》,科学出版社,2006 4.雷伏容主编,《VHDL电路设计》,清华大学出版社,2006 5.Charles H.Roth等著,《数字系统设计与VHDL》,电子工业出版社,2008 五、成绩评定综合以下因素: (1) 说明书及设计图纸的质量(占50%)。 (2) 独立工作能力及设计过程的表现(占30%)。 (3) 回答问题的情况(占20%)。 说明书和图纸部分评分分值分布如下:

EDA综合课程设计实验报告

EDA综合课程设计实验报告 题目:设计一个全双工UART电路院系:XXXX学院 学号:XXXXX 姓名:严XX 教师:林XX 时间:2012.06.02

1 课程设计的摘要原理 (2) 2 设计一个全双工UART电路,具体要求如下: (6) 3.UART设计 (7) 3.1 UART结构 (7) 3.2 UART的帧格式 (8) 4 UART的Verilog HDL语言设计 (9) 4.1 UART分频器 (9) 4.2UART发送模块 (10) 4.3 UART的接收模块 (14) 4.4 UART的硬件测试 (18) 5 课程设计总结 (19)

1摘要 UART协议是数据通信及控制系统中广泛使用的一种全双工串行数据传输协议,在实际工业生产中有时并不使用UART的全部功能。只需将其核心功能集成即可。波特率发生器、接收器和发送器是UART的三个核心功能模块,利用Vefilog-HDL语言对这三个功能模块进行描述并加以整合UART(即Universal AsynchronousReceiver Transmitter 通用异步收发器)是广泛使用的串行数据传输协议。UART允许在串行链路上进行全双工的通信。串行外设用到RS232-C异步串行接口,一般采用专用的集成电路即UART实现。如8250、8251、NS16450等芯片都是常见的UART器件,这类芯片已经相当复杂,有的含有许多辅助的模块(如FIFO),有时我们不需要使用完整的UART的功能和这些辅助功能。或者设计上用到了FPGA/CPLD器件,那么我们就可以将所需要的UART功能集成到FPGA内部。使用VHDL或Veriolog -HDL将UART的核心功能集成,从而使整个设计更加紧凑、稳定且可靠。本文应用EDA技术,基于FPGA/CPLD器件设计与实现UART。 实际应用上,有时我们不需要使用完整的UART的功能和这些辅助功能。使用Verilog-HDL将所需要的UART的核心功能集成到FPGA/CPLD内部,就可以实现紧凑、稳定且可靠的UART数据传输。这样,既可以满足实际的应用,实现所要求的简单的通信和控制,又能够去除更多不需要的繁杂复杂的功能实现。 一、UART的原理 串行通信是指外部设备和计算机间使用一根数据线(另外需要地线,可能还需要控制线)进行数据传输的方式。数据在一根数据线上一位一位传输,每一位数据都占据一个固定的时间长度。与并行通信方式相比,串行通信方式的传输速度较慢,但这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,因此得到了广泛的应用。 基本的UART只需要发送和接收两条数据线就可以完成数据的全双工通信,其基本功能是在发送端将控制器通过总线传过来的并行数据,以设定的格式,设定的频率串行地传输出去,并同时在接收端将串行接收到的数据,转换成相应的并行数据发送出去。UART的基本帧格式如图1所示。其中,起始位总是逻辑O状态,停止位总是逻辑l状态,其持续时间可选为1位、1.5位或2位,其数据位可为5、6、7、8位,校验位可根据需要选择奇校验位,偶校验位或无校验位。

vhdl流水灯课程设计报告

院系: 姓名: 学号: 课程设计名称: 指导老师: 时间:

摘要 VHDL的特点 应用VHDL进行系统设计,有以下几方面的特点。 (一)功能强大 VHDL具有功能强大的语言结构。它可以用明确的代码描述复杂的控制逻辑设计。并且具有多层次的设计描述功能,支持设计库和可重复使用的元件生成。VHDL是一种设计、仿真和综合的标准硬件描述语言。 (二)可移植性 VHDL语言是一个标准语言,其设计描述可以为不同的EDA工具支持。它可以从一个仿真工具移植到另一个仿真工具,从一个综合工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台。此外,通过更换库再重新综合很容易移植为ASIC设计。 (三)独立性 VHDL的硬件描述与具体的工艺技术和硬件结构无关。设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。程序设计的硬件目标器件有广阔的选择范围,可以是各系列的CPLD、FPGA及各种门阵列器件。 (四)可操作性 由于VHDL具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序的条件下,只需改变端口类属参量或函数,就能轻易地改变设计的规模和结构。 (五)灵活性 VHDL最初是作为一种仿真标准格式出现的,有着丰富的仿真语句和库函数。使其在任何大系统的设计中,随时可对设计进行仿真模拟。所以,即使在远离门级的高层次(即使设计尚未完成时),设计者就能够对整个工程设计的结构和功能的可行性进行查验,并做出决策。VHDL的设计结构 VHDL描述数字电路系统设计的行为、功能、输入和输出。它在语法上与现代编程语言相似,但包含了许多与硬件有特殊关系的结构。 VHDL将一个设计称为一个实体Entity(元件、电路或者系统),并且将它分成外部的可见部分(实体名、连接)和内部的隐藏部分(实体算法、实现)。当定义了一个设计的实体之后,其他实体可以利用该实体,也可以开发一个实体库。所以,内部和外部的概念对系统设计的VHDL是十分重要的。

VHDL电子钟实验报告

期末大作业课程设计实验报告设计题目:基于VHDL电子钟的设计

目录 一、概述 (3) 1.1目的 (3) 1.2课程设计的要求和功能 (3) 二、总结 (3) 2.1课程设计进行过程及步骤 (3) 2.2所遇到的问题,如何解决问题 (15) 2.3体会收获以及建议 (15) 3.4参考资料(书,网络资料) (15) 三、教师评语 (16) 四、成绩 (16)

一、概述 1.1目的 1. 基于CPLD系统模块板,设计一个电子钟。来熟悉CPLD的工作原理以及 对VHDL的使用。 2. 通过设计出一个电子钟具有校时功能,来巩固分频,键盘扫描,计数,动 态扫描等知识内容。 1.2课程设计的要求和功能 设计一个电子钟,能进行正常的时分秒计时功能,分别有六个数码管显示24小时,60分钟,60秒的计数器显示。 利用实验箱系统上的按键实现“校时”、“校分”功能: (1)按下“SA”键时,计时器快速递增,按24小时循环,进行时校正; (2)按下“SB”键时,计分器快速递增,按60分循环,进行分校正 (3)按下“SC”键时,秒清零,进行秒校正; 二、总结 2.1课程设计进行及步骤 1.设计提示 系统框图见下

2.系统结构设计描述(1)系统顶层文件 1.顶层原理图见下

2.各个模块的解释 (1)五个输入量clk50MHz,SA,SB,SC,reset: 其中clk50MHz为总体系统提供时钟,并且经过分频来分别对电子 钟模块提供时钟,产生一秒一秒的进位信号,对显示模块的计数器 提供时钟实现显示模块的扫描功能,对按键去抖动提供时钟,实现 键盘扫描的功能。SA,SB,SC用来控制按键,实现按键控制,SA是 实现“时”加一,SB是实现“分”加一,SC是实现“秒”清零。 Reset是来控制按键功能的使能。 (2)按键功能模块 三个输入chos ,date0,date1的功能是:chos接受来自按键的信号, 若按键按下,则将date0的内容,也就是通过按键产生的脉冲来控 制电子钟进行加一,若按键没有按下,则将“秒”分频信号接入电 子钟的clk计数输入端,通过时钟脉冲来控制电子钟。 (3)电子钟计数模块 有5个输入ci,nreset,load,clk,d[7..0],作用分别是ci是使能端,直 接接高电位,nreset是复位,load和d[7..0]是用来置数的,clk提供 计数时钟,也就是一秒一个脉冲。 输出端有三个,co是进位功能,只有“秒”和“分”模块有效, qh[3..0],ql[3..0]是分位的数字输出端,一个是十位,一个是个位。

vhdl数字时钟课程设计

HEFEI UNIVERSITY EDA设计报告 题目 系别 班级 姓名 指导老师 完成时间

目录 一、设计要求 (3) 1.功能介绍 (3) 2.性能与功能设计 (3) 二、方案设计 (3) 三、程序框图 (3) 四、程序原理图 (4) 五、程序仿真与分析 (5) 1.秒计数器 (5) 2.分计数器 (5) 3.小时计数器 (6) 4.整点报时报警 (6) 5.时钟系统波形图 (7) 六、程序代码 (7) 七、总结与体会 (11)

一、设计要求 1、功能介绍 1)具有时、分、秒计数显示功能,以24小时循环计时。 2)具有调节小时、分钟及清零的功能。 3)具有整点报时功能。 2.性能及功能设计 1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。 2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的键7和键4进行任意的调整,同时可以通过改变频率来改变计数。 3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。 4)蜂鸣器在整点时有报时信号产生,蜂鸣器报警。产生报警声音。 二、方案设计 根据各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。显示:小时采用24进制,而分钟和秒均60进制。 三、程序框图

(最新版)VHDL,CPU实验报告

计算机硬件课程设计 设计报告 学号:姓名:成绩: 学号:姓名:成绩: 东南大学计算机科学与工程系 二0 10 年12 月 目录 1.实验名称 (2)

2.实验目的 (2) 3.实验任务……………………………………………………………………… 2. 4.主要特色 (2) 5. 设计方案 (3) 5.1 数据格式和指令系统 (3) 5.2本设计的体系结构 (5) 5.测试结果与性能分析 (20) 6.课程设计总结 (22) 1.实验名称 微程序控制的模型计算机的设计与调试 2.实验目的 1.综合运用“计算机组成原理”和“数字电路”等课程的知识,通过对模型机的设计和调试,加深对计算机各部件工作原理的认识。 2.进一步掌握运用EDA技术进行设计和调试的工作方法。 3.掌握计算机硬件设计的思想,方法及工作过程,进一步培养工程设计的能力。 3.实验任务 1.自行规定数据格式和指令格式,在所提供的条件范围内设计一台由微程序控制(也可以用其他方式如组合逻辑等)的模型计算机。 2.根据设计方案,将模型机调试成功。 3.整理出相关文件。 (1)数据格式和指令系统。 (2)总框图。 (3)详细电路图或有关电路的VHDL语言源程序。 (4)微指令格式和微程序。 (5)调试过程和测试结果(包括测试程序)。

4.主要特色 1.增加了ROM的宽度,改为24位,使得可以在一个时钟内读出24位的微指令。 2.对电路进行了合理的修改,具体增加了SRC. DEST结合IR0,IR2,IR1,IR3到RA,RB的译码电路。 3.SRC. DEST结合IR0,IR2,IR1,IR3到WA,WB的译码电路,实现了对于源操作数的写入。 4.由微指令到8CPU中对应的端口译码。 5.重新构造了ROM,RAM,修改了时序电路,调整了M1,M2,M3,M4的时序。 6.除了书上要求的指令微程序以外,还对微程序进行了扩充,加了逻辑左移指令:SAL(每次执行左移一位),以及乘法指令:MUL(8位与8位数据相乘,得到16位数据高8位写回源操作数,低8位写回目的操作数) 7.修改了M1,M2,M3,M4的连接电路。 8.通过用软件模拟的方法,成功的构造了一个简单的CPU,更加熟练的学会使用EDA技术。试验中结合了数字实验和组成原理部分内容。 9.用简单易读的方式排列24位控制信号,使得操作更加简便,如图所示

VHDL与数字系统课程设计(简单处理器设计)

课程设计报告 实践课题: VHDL与数字系统课程设计 学生: XXX 指导老师: XXX、XXX 系别:电子信息与电气工程系 专业:电子科学与技术 班级: XXX 学号: XXX

一、设计任务 用VHDL设计一个简单的处理器,并完成相关的仿真测试。 .设计要求: 图1是一个处理器的原理图,它包含了一定数量的寄存器、一个复用器、一个加法/减法器(Addsub),一个计数器和一个控制单元。 图1 简单处理器的电路图 数据传输实现过程:16位数据从DIN输入到系统中,可以通过复用器分配给R0~R7和A,复用器也允许数据从一个寄存器传通过Bus送到另外一个寄存器。 加法和减法的实现过程:复用器先将一个数据通过总线放到寄存器A中,然后将另一个数据放到总线上,加法/减法器对这两个数据进行运算,运算结果存入寄存器G中,G中的数据又可根据要求通过复用器转存到其他寄存器中。 1)Rx ← [Ry] :将寄存器Ry中的内容复制到Rx; 2)Mvi Rx,#D :将立即数存入寄存器Rx中去。 所有指令都按9位编码(取自DIN的高9位)存储在指令存储器IR中,编编码规则为IIIXXXYYY,III 表示指令,XXX表示Rx寄存器,YYY表示Ry寄存器。立即数#D是在mvi指令存储到IR中之后,通过16

位DIN 输入的。 有一些指令,如加法指令和减法指令,需要在总线上多次传输数据,因此需要多个时钟周期才能完成。控制单元使用了一个两位计数器来区分这些指令执行的每一个阶段。当Run 信号置位时,处理器开始执行DIN 输 二、实现功能说明 2.1 mv Rx,Ry 实现的功能:将寄存器Rx 的值赋给寄存器Ry (以mv R0, R5为例) (1 )计数器为“00”时,指令寄存器的置位控制信号输入端IRin=1有效,将DIN 输入的数据的高9位锁存。置位的控制信号如图3加粗黑线所示。 图3 (2)计数器为“01”时,首先控制单元根据设计器为“00”时输入的指令,向复用器发出选通控制信号,复用器根据该控制信号让R5的值输出到总线上,然后控制单元控制寄存器R0将总线上的值锁存,完成整个寄存器对寄存器的赋值过程。置位的控制信号和数据流如图4加粗黑线所示。 图4

VHDL课程设计模板

2009-20010年第1学期 VHDL 设计题目: 设计题号: 难度系数: 专业: 年级: 设计人: 学号: 设计指导:徐仲晖 平时成绩: 电路成绩: 报告成绩: 总成绩: 批阅人:徐仲晖 2009.12.06

一:设计目的(5分。得分:) (1)设计XXXXXXXX电路;(0.5分) (2)通过XXXXX分析,研究XXXXX特性;(命题定位内容0.5分) (3)通过XXXXX分析,研究XXXXX特性;(待定) (4)通过XXXXX分析,证明XXXXX定律的正确性;(待定) (5)研究XXXX元器件在XXXXXXX电路中的作用;(待定) (6)通过设计,熟练掌握XXXX元器件相关概念及其电路分析方法;(0.5分)(7)通过设计,熟练掌握XXXXXXX电路设计及仿真。(0.5分) (8)通过设计,掌握需求,制定设计规范(0.5分) 二:设计原理(40分。得分:) (1)英文说明书阅读摘要(10分。其中:提交原文1分,阅读摘要4分。得分:): The 74LS164 is a high speed 8-Bit Serial-In Parallel-Out Shift Register. Serial data is entered through a 2-Input AND gate synchronous with the LOW to HIGH transition of the clock. The device features an asynchronous Master Reset which clears the register setting all outputs LOW independent of the clock. It utilizes the Schottky diode clamped process to achieve high speeds and is fully compatible with all ON Semiconductor TTL products. 图82-1:图号取自于设计编号,注意格式 (2)电路组成描述(5分。其中:元器件名称1分,互连关系1分,作用1分。得分:): (3)电路原理描述(10分。其中:电路功能1分,层次关系1分,关键环节1分,术语规范2分。得分:): 74ls164为8位串行入并行出移位寄存器,当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。串行数据输入端(A,B)可控制数据。当 A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0 为低电平。当A、B 有一个为高电平,则另一个就允许输入数据,并在CLOCK 上升沿作用下决定Q0 的状态。 (4)真值表(5分。得分:):

相关主题
文本预览
相关文档 最新文档