当前位置:文档之家› VHDL课程设计报告-数字频率计

VHDL课程设计报告-数字频率计

VHDL课程设计报告-数字频率计
VHDL课程设计报告-数字频率计

《可编程数字系统》课程设计报告

《可编程数字系统》课程设计报告

摘要

随着计算机技术、超大规模集成电路、EDA技术的发展和可编程逻辑器件的广泛应用,传统的自下而上的数字电路设计方法、工具、器件已远远落后于当今信息技术的发展。基于EDA技术和硬件描述语言的自上而下的设计技术正在承担起越来越多的数字系统设计任务。本论文采用自上向下的设计方法,基于VHDL 硬件描述语言,以QUARTUSⅡ为开发环境设计了一种数字频率计并且进行调试,达到了预期目标。

关键词:EDA VHDL QUARTUSⅡ数字频率计占空比

一、设计任务及要求

设计一数字频率计,用VHDL语言描述,用QuartusII工具编译和综合,并在实验板上实现,同时提交实验报告。功能要求与技术指标如下:

1.基本功能要求

(1)能够测量出方波的频率,其范围50Hz~50KHz。

(2)要求测量的频率绝对误差±5Hz。

(3)将测量出的频率以十进制格式在实验板上的4个数码管上显示。

(4)测量响应时间小于等于10秒。

以上(1)~(4)基本功能要求均需实现。

2.发挥部分

(1)提高测量频率范围,如10Hz~100KHz或更高、更低频率,提高频率的测量绝对值误差,如达到±1Hz。

(2)可以设置量程分档显示,如X1档(显示范围1Hz~9999Hz),X10档(显示范围0.001KHz~9.999KHz),X100档(显示范围

0.100KHz~999.9KHz)...可以自定义各档位的范围。量程选择可以

通过按键选择,也可以通过程序自动选择量程。

(3)能够测量出正弦波和三角波的频率(可以添加外围信号处理电路)。

(4)若是方波能够测量方波的占空比,并通过数码管显示。

以上(1)~(4)发挥功能可选择实现其中的若干项。

二、设计原理

常用的频率测量方法有周期法、直接测频法和等精度频率测量法。在对这几种测量频率方法进行比较之后,选择了直接测频法。直接测频法就是在确定的闸门时间内,记录被测信号的脉冲个数。由于闸门时间通常不是待测信号的整数倍,这种方法的计数值也会产生最大为±1个脉冲误差。

数字频率计的测量整体原理如图1,被测信号为外部输入信号,送入测量电

路,在确定的闸门时间内,测量计数、数据锁存和送显,就完成了频率计的基本功能,通过按键选择用来实现频率的测量、显示和待测信号占空比的测量、显示。

图1 数字频率计的原理框图

LOAD

CLR

图2

三、系统分析

系统组成框图如图3所示,它主要由5个模块组成,分别是:1HZ闸门信号产生与测频时序控制电路、频率计数电路、占空比电路、动态扫描电路和译码显示电路。由于实验硬件要求所以设计一个动态LED 数码管显示即扫描模块。当系统正常工作时,由实验板的晶振提供50MHZ的标准时钟CLK作为输入信号。对于频率测量,经过测频时序控制电路产生一个1秒宽度的计数信号,被测信号被送入计数模块,计数模块对输入的矩形波进行计数;对于占空比测量,通过标准时钟计算被测信号高电平以及周期的时长,并进行相关的换算。然后将计数结果送入动态扫描电路并通过按键进行选择输出,输出结果由显示译码驱动电路将二进制表示的(BCD码)计数结果转换成相应的十进制结果,在数码管上可以看到计数结果。

图3 系统组成

四、程序设计

系统的程序也相应的分成几个部分,以实现系统各个模块的功能。系统的程序设计如下所示:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

-------------------------------------------------------------------- ENTITY pinlvji IS

PORT( k:IN STD_LOGIC; --复位信号

k5:IN STD_LOGIC;

clk :IN STD_LOGIC;

clkin:IN STD_LOGIC; --外部输入被测信号

data_led:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); --八段码

dp:OUT STD_LOGIC;

seg:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); --数码管位选信号

END pinlvji;

ARCHITECTURE rtl OF pinlvji IS

SIGNAL reset: STD_LOGIC;

SIGNAL cnt1,cnt2,cnt3,cnt4,cnt5,cnt6,cnt7:STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL bcd:STD_LOGIC_VECTOR(3 DOWNTO 0); --BCD码寄存器

SIGNAL k_1hz :INTEGER RANGE 0 TO 50000000; --秒分频系数

SIGNAL

en,bclk,clk_shift,check_clk1,check_clk2,check_clk3,check_clk4:std_log ic;

SIGNAL point : STD_LOGIC_VECTOR(1 DOWNTO 0); --小数点SIGNAL pointout : STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL bcd0,bcd1,bcd2,bcd3 : STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL temp:STD_LOGIC_VECTOR(22 DOWNTO 0);

SIGNAL ZKB:INTEGER RANGE 0 TO 99;--占空比

SIGNAL CNTZ1:INTEGER RANGE 0 TO 50000000:=0;

SIGNAL CNQ1:INTEGER RANGE 0 TO 50000000:=0;

SIGNAL CNTZ2:INTEGER RANGE 0 TO 50000000:=0;

SIGNAL CNQ2:INTEGER RANGE 0 TO 50000000:=0;

SIGNAL CLKOUT:STD_LOGIC;

SIGNAL Z1:STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL Z0:STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL CNT0: INTEGER RANGE 0 TO 50000000:=0;

SIGNAL ZKOUT0,ZKOUT1:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

reset<=NOT k;

process(clk) --分频器;

variable cnt11,cnt22,cnt33,cnt44 : INTEGER RANGE TO 25000000;

begin

if reset='1' then

cnt11:=0;cnt22:=0;cnt33:=0;check_clk1<='0';

check_clk2<='0';check_clk3<='0';check_clk4<='0';

elsif clk'event and clk='1' then

if cnt11=249 then check_clk1<=not check_clk1;cnt11:=0;

else cnt11:=cnt11+1;

end if;

if cnt22=24999 then check_clk2<=not check_clk2; cnt22:=0; else cnt22:=cnt22+1;

end if;

if cnt33=99999 then check_clk3<=not check_clk3; cnt33:=0;

else cnt33:=cnt33+1;

end if;

if cnt44=499999 then check_clk4<=not check_clk4;cnt44:=0;

else cnt44:=cnt44+1;

end if;

end if;

end process;

second:process(clk,reset)

begin

if reset='1' then k_1hz<=0;

elsif clk'event and clk='1' then

if k_1hz<49999999 then k_1hz<=k_1hz+1;

else k_1hz<=50000000;

end if;

end if;

if k_1hz<49999999 and reset='0' then en<='1';

else en<='0';

end if;

end process;

process(en,reset,bclk) --此进程完成对被测信号计脉冲数

begin

if reset='1' then

cnt1<="0000";cnt2<="0000";cnt3<="0000";cnt4<="0000";cnt5<="0000";cnt6 <="0000";cnt7<="0000";

elsif bclk'event and bclk='1' then

if cnt1="1001" then cnt1<="0000";

if cnt2="1001" then cnt2<="0000";

if cnt3="1001" then cnt3<="0000";

if cnt4="1001" then cnt4<="0000";

if cnt5="1001" THEN cnt5<="0000";

if cnt6="1001" then cnt6<="0000";

if cnt7="1001" then cnt7<="0000";

else cnt7<=cnt7+1;

end if;

else cnt6<=cnt6+1;

end if;

else cnt5<=cnt5+1;

end if;

else cnt4<=cnt4+1;

end if;

else cnt3<=cnt3+1;

end if;

else cnt2<=cnt2+1;

end if;

else cnt1<=cnt1+1;

end if;

end if;

end process;

process(clk,en)

begin

if rising_edge(clk) then

if(k5='1' ) then

if en='0' then

if cnt7>"0000" then bcd3<=cnt7; bcd2<=cnt6; bcd1<=cnt5;

bcd0<=cnt4; point<="00";

elsif cnt6>"0000" then bcd3<=cnt6; bcd2<=cnt5; bcd1<=cnt4;

bcd0<=cnt3; point<="01";

elsif cnt5>"0000" then bcd3<=cnt5; bcd2<=cnt4; bcd1<=cnt3;

bcd0<=cnt2; point<="10";

else bcd3<=cnt4; bcd2<=cnt3; bcd1<=cnt2; bcd0<=cnt1;

point<="11";

end if;

end if;

else

bcd3<="1111";bcd2<="1111";

bcd1<="1111";bcd0<="1111";

bcd1<=zkout0;bcd0<=zkout1;

end if;

end if;

end process;

process(clk) --分频器;

variable cnt : integer range 0 to 50000;

begin

if clk'event and clk='1' then cnt:=cnt+1;

if cnt<25000 then clk_shift<='1';

elsif cnt<50000 then clk_shift<='0';

else cnt:=0;clk_shift<='0';

end if;

end if;

end process;

process(clk_shift,reset)

variable cnt : std_logic_vector(2 downto 0); begin

if reset='1' then

cnt:="000";shift<="1111";

elsif clk_shift'event and clk_shift='1' then cnt:=cnt+1;

if cnt="001" then

seg<="1111";

bcd<="1111";

elsif cnt="010" then

seg<="1111";

bcd<=bcd3;

elsif cnt="011" then

seg<="0111"; pointout<="0111";

bcd<=bcd2;

elsif cnt="100" then

seg<="1011"; pointout<="1011";

bcd<=bcd1;

elsif cnt="101" then

seg<="1101"; pointout<="1101";

bcd<=bcd0;

elsif cnt="110" then

seg<="1110"; pointout<="1110";

elsif cnt="111" then

bcd<="1111";

seg<="1111";

end if;

end if;

end process;

process (clk_shift,bcd,k5) --译码

begin

if clk_shift'event and clk_shift='1' then

if(k5='0') then

dp<='1';

elsif((pointout="0111"and point="10")or(pointout="1011"and point="01")or(pointout="1101"and point="00")or(pointout="1110"and point="11")) then

dp<='0';

else dp<='1';

end if;

case bcd is

when"0000"=>data_led<="1000000";--0

when"0001"=>data_led<="1111001";--1

when"0010"=>data_led<="0100100";--2

when"0011"=>data_led<="0110000";--3

when"0100"=>data_led<="0011001";--4

when"0101"=>data_led<="0010010";--5

when"0110"=>data_led<="0000010";--6

when"0111"=>data_led<="1111000";--7

when"1000"=>data_led<="0000000";--8

when"1001"=>data_led<="0010000";--9

when others=>data_led<="1111111";--No signal; end case;

end if;

end process;

process(clkin) --占空比计算

begin

if(rising_edge(clkin))then

clkout<=not clkout;

end if;

end process;

process(clkin,clk)

begin

if(rising_edge(clk))then

if clkin='1' then

cntz1<=cntz1+1;

elsif cntz1/=0 then

cnq1<=cntz1;cntz1<=0;

end if;

end if;

end process;

process(clkout,clk)

begin

if(rising_edge(clk))then

if clkout='1' then

cnt2<=cnt2+1;

ELSIF cnt2/=0 then

cnq2<=cnt2;cnt2<=0;

end if;

end if;

end process;

zkb<=cnq1*100/cnq2;

z1<=CONV_STD_LOGIC_VECTOR((zkb REM 10),4);

z0<=CONV_STD_LOGIC_VECTOR(((zkb/10) REM 10),4);

process(clk)

begin

if(rising_edge(clk))then

if(cnt0=50000000)then

cnt0<=0;

zkout0<=Z0;

zkout1<=Z1;

else cnt0<=cnt0+1;

end if;

end if;

end process;

bclk<=clkin and en;

end rtl;

五、实验结果

经过多次修改和调试,设计基本上完成了功能要求,各项结果如下:

1、能够测量出方波的频率,其范围1Hz~9.9MHz;

2、可以根据输入信号大小自动变化量程;

3、要求测量的频率绝对误差±2Hz;

4、测量响应时间小于等于10秒;

5、将测量出的频率或占空比以十进制格式在实验板上的4个数码管上显示;

6、可以通过按键选择测量和显示频率或是占空比。测试结果附图:

六、结论分析

本设计采用EDA技术,利用直接测频法的原理和VHDL语言,采用自顶向下的设计方法,实现了1Hz~10MHz频率测量和占空比测量的四位十进制的数字频率计,并在QUARTUSⅡ软件平台下对设计项目进行了编译。实验结果表明,该系统能够满足本次设计的要求,并且具有测量误差小,可靠性高的优点。

七、心得体会

历时一周《可编程数字系统》课程设计结束了,在这个星期中,我遇到了许多问题,而正是在解决一个个问题的过程中,我对VHDL语言的理解和认识也不断加深,对EDA技术有了进一步的了解。这个课程设计也让我懂得,理论知识真的很重要,而实践能够加深对理论知识的理解,将理论和实践结合起来,才能设计出优秀的作品。在这个课程设计过程中,我不只是完成一个设计,更重要的是在这一过程中所体会和学到的一些非知识技能层面的东西——细心、坚持、

不断学习,我相信这会是一次难得的经历。

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灯来显示收到的数据。三、课程设计的内容与要求

基于FPGA的频率计的文献综述

文献综述 一.课题来源及研究的目的和意义 数字频率计已经广泛应用于高科技等产品上面,可以不无夸张的说没有不包含有频率计的电子产品。我国的CD、VCD、DVD和数字音响广播等新技术已开始大量进入市场;而在今天这些行业中都必须用到频率计。到今天频率计已开始并正在向智能、精细方向的发展,因此系统对电路的要求越来越高,传统的集成电路设计技术已经无法满足性能日益提高的系统要求。在信息技术高度发展的今天,电子系统数字化已成为有目共睹的趋势。从传统的应用中小规模芯片构成系统到广泛地应用单片机,直至今天FPGA/CPLD在系统设计中的应用,电子技术已迈入一个全新的阶段。而在电子技术中,频率是最基本的参数之一,而信号的频率往往与测量方案的制定、测量结果都有十分密切的关系,所以测频率方法的研究越来越受到重视。 数字频率计属于时序电路,它主要由具有记忆功能的触发器构成。在计算机及各种数字仪表中,都得到了广泛的应用。在CMOS电路系列产品中,数字频率计是用量最大、品种很多的产品,是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。EDA技术是面向解决电子系统最基本最底层硬件实现问题的技术,通过设计输入编辑、仿真、适配、下载实现整个系统硬件软件的设计过程。通过EDA技术设计者不但可以不必了解硬件结构设计, 而且将使系统大大简化, 提高整体的可靠性,再加上其设计的灵活性使得EDA技术得以快速发展和广泛应用。 二、主要研究内容 1、研究内容 数字频率计用于对方波、正弦波、三角波的测量,并将结果用十进制数字显示,本设计的应达到的技术指标有: 1)频率测量范围:10HZ~100MHZ; 2)测量分辨率:1HZ; 3)测量通道灵敏度:50mVpp; 4)通道输入阻抗:不小于100KΩ; 5)测量误差:±1; 2、测量方案 (1)测频原理选择 目前常用测量频率原理有三种:直接测量频率方法、直接与间接测量相结合

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设计的频率计 专业:信息工程学号:姓名: 一、实验任务及要求 1、设计一个可测频率的数字式频率计,测量范围为1Hz~12MHz。该频率计 的逻辑图如图所示。 2、用层次化设计方法设计该电路,编写各个功能模块的程序。 3、仿真各功能模块,通过观察有关波形确认电路设计是否正确。 4、完成电路设计后,用实验系统下载验证设计的正确性。 二、设计说明与提示 由上图可知8位十进制数字频率计,由一个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器CNT10、一个32位锁存器REG32B组成。 1、测频控制信号发生器设计要求。频率测量的基本原理是计算每秒种内待测信号的脉冲个数。这就要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同不控制。当TSTEN高电平时允许计数、低电平时停止计数,并保持其所计的数。在停止计数期间,首先需要一个锁存信号Load的上跳沿将计数器在前1秒钟的计

数值锁存进32位锁存器REG32B中,并由外部的7段译码器译出并稳定显示。设置锁存器的好处是为了显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信号CLR_CNT对计数器进行清零,为下1秒钟的计数操作做准备。测频控制信号发生器的工作时序如下图。为了产生这个时序图,需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上沿到来时使其值翻转。 其中控制信号时钟CLK的频率1Hz,那么信号TSTEN的脉宽恰好为1秒,可以用作闸门信号。然后根据测频的时序要求,可得出信号Load和CLR_CNT 的逻辑描述。由图可见,在计数完成后,即计数使能信号TSTEN在1秒的高电平后,利用其反相值的上跳沿产生一个锁存信号Load,0.5秒后,CLR_CNT产生一个清零信号上跳沿。 高质量的测频控制信号发生器的设计十分重要,设计中要对其进行仔细的实时仿真(TIMING SIMULATION),防止可能产生的毛剌。 2、寄存器REG32B设计要求。若已有32位BCD码存在于此模块的输入口,在信号Load的上升沿后即被锁存到寄存器REG32B的内部,并由REG32B的输出端输出,经7段译码器译码后,能在数码管上显示输出的相对应的数值。 3、十进制计数器CNT10设计要求。此十进制计数器的特殊之处是,有一时钟使能输入端ENA,当高电平时计数允许,低电平时禁止计数。 三、各个模块设计程序与时序仿真 (1)测频控制信号发生器 程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY TESTCTL IS PORT (CLK : IN STD_LOGIC; TSTEN : OUT STD_LOGIC; CLR_CNT : OUT STD_LOGIC; Load : OUT STD_LOGIC); END TESTCTL; ARCHITECTURE behav OF TESTCTL IS SIGNAL Div2CLK : STD_LOGIC; BEGIN

跑马灯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的频率计设计

课程论文(设计)题目基于quartus的频率计的设计院系电子与信息工程学院 专业电子与通信工程 学生姓名 学号 指导教师 二O一四年元月三日

一、频率计的说明 (3) 二、顶层原理图 (4) 三、底层模块设计 (4) 3.1十进制加法计数器CNT10 (4) 3.2十二进制加法计数器CNT12 (5) 3.3控制模块CODE (6) 3.4锁存器LOCK (7) 四、底层模块的仿真 (7) 4.1LOCK模块的仿真结果 (7) 4.2CNT12的仿真结果 (8) 4.3CNT10模块的仿真结果 (8) 4.4CODE模块的仿真结果 (8) 五、频率计顶层原理图的输入 (9) 六、频率计仿真结果 (9) 总结 (10)

一、频率计的说明 频率就是周期性信号在单位时间(1S )内的变化次数。频率计的作用就是测量输入信号的频率,我设计的频率计的原理是若在一定1S 的时间间隔内测得这个周期性信号的重复变化次数为N ,则其频率可表示为:f=N 。如下图1.1所示,通过定义闸门信号为1s 后,通过统计下该时间内有多少次脉冲即可得到相应的频率。 图1.1系统测量频率的原理 系统的框图如下图1.2所示,首先由时基电路产生基准信号,通过控制电路产生出1s 的闸门信号,闸门电路把1s 内截取的检测信号传递给计数器,通过计数器计数就可以得到需要测量的频率。锁存器的作用就是为了保存当前的频率交给显示电路显示。 计数器 锁存器 显示电路 闸门电路 计数脉冲 控制电路 锁存信号 清零信号闸门信号 时基 电路被测信号 图1.2系统原理框图

二、顶层原理图 如下图2.1所示,系统顶层原理图包括CNT12、CODE 、CNT10、LOCK 、CODE 模块。其中CNT10和CNT12分别为10和12进制计数器,CODE 则为控制模块输出清零、锁存、和闸门信号,LOCK 则为锁存模块,负责将采集的频率数值锁存起来方便显示,CODE 模块则是将二进制转换成十进制的模块。 系统中的clk1为为我们为测试时候的输入闸门信号,通过CNT12信号后模拟1s 的闸门的信号,系统输出的端口为4个QQ[3..0],这样方便系统仿真,也可以减少系统的复杂程度。 CNT10CLK CLR CS ]0QQ[3..CO CNT10CLK CLR CS ]0QQ[3..CO CNT10CLK CLR CS ]0QQ[3..CO CNT10CLK CLR CS ] 0QQ[3..CO LOCK ] 0DD[3..] 0QQ[3..LOCK ] 0DD[3..] 0QQ[3..LOCK ] 0DD[3..]0QQ[3..LOCK ] 0DD[3..] 0QQ[3..CODE LOCK CLR CS ]0DD[https://www.doczj.com/doc/8b7723319.html,T12 CLK ] 0QQ[3..CLK CLK CLK CLK (被测信号)) (8Hz CLK1 f CLKIN DECODER ] 0AK[3..g a ~]0LED1[6..]0LED2[6..]0LED3[6..]0LED4[6..DECODER DECODER DECODER ] 0AK[3..] 0AK[3..] 0AK[3..g a ~g a ~g a ~ 三、底层模块设计 3.1十进制加法计数器CNT10 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

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频率计的设计

频率计 一、实验目的 1.学习并熟悉使用max+plusⅡ软件。 2.掌握各频率计各逻辑模块的功能与设计方法。 二、实验原理 频率测量基本原理是计算每秒钟内待测信号的脉冲个数。要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。当TSTEN为高电平时,允许计数;为低电频时停止计数,并保持其所计的脉冲信号。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前一秒的计数值锁存进32位锁存器REG32B中,并由周期性的清零信号并不断闪烁。所存信号之后,必需有一清零信号CLR_CNT 对计数器进行清零,为下一秒的计数做准备。测试控制信号发生器的工作时序如图。为了产生这个时序图,需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上沿到来时其值翻转。 三、实验内容和代码 —————————————cnt10—————————————— LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY CNT10 IS PORT (CLK: IN STD_LOGIC; CLR: IN STD_LOGIC; ENA: IN STD_LOGIC; CQ: OUT INTEGER RANGE 0 TO 15; CARRY_OUT :OUT STD_LOGIC ); END CNT10; ARCHITECTURE behav OF CNT10 IS SIGNAL CQI: INTEGER RANGE 0 TO 15; BEGIN PROCESS(CLK, CLR, ENA) BEGIN IF CLR = '1' THEN CQI <= 0; ELSIF CLK'EVENT AND CLK = '1' THEN IF ENA = '1' THEN IF CQI < 9 THEN CQI <= CQI + 1; ELSE CQI <= 0;END IF; END IF; END IF; END PROCESS; PROCESS(CQI) BEGIN

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语言进行数字频率计的设计能够使设计结构清晰、层次清楚,减少了由电子器件之间引起的相互干扰。本文介绍了基于Altera公司的集成开发环境QuartusII,使用VHDL设计等精度的频率计,采用这样的设计可以简化硬件的开发和制造过程,而且使硬件体积大大减小,并提高了系统的可靠性。 关键词频率;等精度;VHDL;数字频率计

A VHDL-BASED DIGITAL FREQUENCY METER DESIGN ABSTRACT In electronic measurement technology, the frequency is one of most basic parameters.It all has a very close relationship with parameters and non-electric power measurements.Through the use of precision measurement that can improve these issues. For the frequency meter which uses the precision measurement,the relative error of the measurement frequency has nothing to do with the size of the measured signaling frequency, and only related with gate time and standard signaling https://www.doczj.com/doc/8b7723319.html,ly Namely the realization of precision measurement. Designing the digital frequency meter using the VHDL language that can cause the design structure clearly, the level to be clear,and reduce the mutual disturbance which caused by the electronic device between. This article introduces a basic method to design a precision frequency meter with VHDL in QuartusII IDE of Altera https://www.doczj.com/doc/8b7723319.html,ing such design that can simplify the development of the hardware and the manufacture process, moreover can reduce the hardware volume greatly, and improve the reliability of the system. KEY WORDS frequency;precision;VHDL;digital frequency meter

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