VHDL设计进阶

上传人:小*** 文档编号:243073388 上传时间:2024-09-15 格式:PPT 页数:80 大小:12.73MB
返回 下载 相关 举报
VHDL设计进阶_第1页
第1页 / 共80页
VHDL设计进阶_第2页
第2页 / 共80页
VHDL设计进阶_第3页
第3页 / 共80页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第6章,VHDL,设计进阶,一、,4,位加法计数器的,VHDL,描述,二、不同工作方式的时序电路,三、数据对象,DATA OBIECTS,四、双向电路和三态控制,五、进程语句结构,六、仿真延时,实验与设计,6.1.1 4位加法计数器,【例6-1】,ENTITY CNT4 IS,PORT ( CLK : IN BIT ;,Q : BUFFER INTEGER RANGE 15 DOWNTO 0 ) ;,END ;,ARCHITECTURE,bhv,OF CNT4 IS,BEGIN,PROCESS (CLK),BEGIN,IF CLKEVENT AND CLK = 1 THEN,Q = Q + 1 ;,END IF;,END PROCESS ;,END,bhv,;,6.1 4位加法计数器的,VHDL,描述,6.1.2 整数、自然数和正整数数据类型,整数常量的书写方式示例如下:,1,十进制整数,0,十进制整数,35,十进制整数,10,E3,十进制整数,16#,D9#,十六进制整数,8#720# 八进制整数,2#11010010# 二进制整数,6.1 4位加法计数器的,VHDL,描述,6.1.3 4位加法计数器的另一种表达方式,【例6-2】,LIBRARY IEEE ;,USE IEEE.STD_LOGIC_1164.ALL ;,USE IEEE.STD_LOGIC_UNSIGNED.ALL ;,ENTITY CNT4 IS,PORT ( CLK : IN STD_LOGIC ;,Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;,END ;,ARCHITECTURE,bhv,OF CNT4 IS,SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);,BEGIN,PROCESS (CLK),BEGIN,IF CLKEVENT AND CLK = 1 THEN,Q1 = Q1 + 1 ;,END IF;,Q X),为了简化表达才使用短语“(,OTHERS=X)”,,这是一个省略赋值操作符,它可以在较多位的位矢量赋值中作省略化的赋值,如以下语句:,SIGNAL d1 : STD_LOGIC_VECTOR(4 DOWNTO 0);,VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0);,.,d1 0); a1 := (OTHERS=0) ;,6.2 不同工作方式的时序电路设计,6.2.2 带有复位和时钟使能的10进制计数器,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL;,ENTITY CNT10 IS,PORT (CLK,RST,EN : IN STD_LOGIC;,CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);,COUT : OUT STD_LOGIC );,END CNT10;,ARCHITECTURE,behav,OF CNT10 IS,BEGIN,PROCESS(CLK, RST, EN),VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);,BEGIN,IF RST = 1 THEN CQI := (OTHERS =0) ; -,计数器复位,ELSIF CLKEVENT AND CLK=1 THEN -,检测时钟上升沿,IF EN = 1 THEN -,检测是否允许计数,IF CQI 0);-,大于9,计数值清零,END IF;,END IF;,END IF;,IF CQI = 1001 THEN COUT = 1; -,计数大于9,输出进位信号,ELSE COUT = 0;,END IF;,CQ = CQI; -,将计数值向端口输出,END PROCESS;,END,behav,;,【例6-3】,图6-3 例6-3的,RTL,电路,图6-4 例6-3的工作时序,6.2.3 带有并行置位的移位寄存器,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY SHFRT IS - 8,位右移寄存器,PORT ( CLK,LOAD : IN STD_LOGIC;,DIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);,QB : OUT STD_LOGIC );,END SHFRT;,ARCHITECTURE,behav,OF SHFRT IS,BEGIN,PROCESS (CLK, LOAD),VARIABLE REG8 : STD_LOGIC_VECTOR(7 DOWNTO 0);,BEGIN,IF CLKEVENT AND CLK = 1 THEN,IF LOAD = 1 THEN -,装载新数据,REG8 := DIN;,ELSE,REG8(6 DOWNTO 0) := REG8(7 DOWNTO 1);,END IF;,END IF;,QB = REG8(0);,END PROCESS; -,输出最低位,END,behav,;,【例6-4】,6.2.3 带有并行置位的移位寄存器,图6-5 例6-4的工作时序,(1)在第,一个时钟到来时,,LOAD,恰为高电平,(2)第二个时钟,以及以后的时钟信号都是移位时钟,(3)第二,个时钟后,,QB,输出了右移出的第2个位1,6.3.1 常数(,CONSTANT),常数定义的一般表述:,CONSTANT,常数名:数据类型 := 表达式 ;,6.3.2 变量(,VARIABLE),定义变量的一般表述:,VARIABLE,变量名 : 数据类型 := 初始值 ;,6.3.3 信号(,SIGNAL),定义格式:,SIGNAL,信号名: 数据类型 := 初始值 ;,6.3 数据对象,DATA OBJECTS,6.3 数据对象,DATA OBJECTS,6.3.4 进程中的信号与变量赋值语句,信号,SIGNAL,变量,VARIABLE,基本用法 用于作为电路中的信号连线,用于作为进程中局部数据存储单元,适用范围 在整个结构体内的任何地方都能适用,只能在所定义的进程中使用,行为特性 在进程的最后才对信号赋值,立即赋值,表6-1 信号与变量赋值语句功能的比较,6.3.4 进程中的信号与变量赋值语句,【例6-5】,LIBRARY IEEE ;,USE IEEE.STD_LOGIC_1164.ALL ;,ENTITY DFF3 IS,PORT ( CLK,D1 : IN STD_LOGIC ;,Q1 : OUT STD_LOGIC);,END ;,ARCHITECTURE,bhv,OF DFF3 IS,BEGIN,PROCESS (CLK),VARIABLE QQ : STD_LOGIC ;,BEGIN,IF CLKEVENT AND CLK = 1 THEN,QQ := D1 ;,END IF;,Q1 = QQ;,END PROCESS ;,END ;,6.3.4 进程中的信号与变量赋值语句,【,例6-6】,. . .,ARCHITECTURE,bhv,OF DFF3 IS,SIGNAL QQ : STD_LOGIC ;,BEGIN,PROCESS (CLK),BEGIN,IF CLKEVENT AND CLK =1 THEN,QQ = D1 ;,END IF;,Q1 = QQ;,END PROCESS ;,END ;,6.3.4 进程中的信号与变量赋值语句,【例6-7】,SIGNAL in1,in2,e1, . : STD_LOGIC ;,.,PROCESS(in1,in2, . . .),VARIABLE c1,. . . : STD_LOGIC_VECTOR(3 DOWNTO 0) ;,BEGIN,IF in1 = 1 THEN . -,第 1 行,e1 = 1010 ; -,第 2 行,.,IF in2 = 0 THEN . . . -,第 15+,n,行,.,c1 := 0011 ; -,第 30+,m,行,.,END IF;,END PROCESS;,【例6-8】,LIBRARY IEEE ;,USE IEEE.STD_LOGIC_1164.ALL ;,ENTITY DFF3 IS,PORT ( CLK,D1 : IN STD_LOGIC ;,Q1 : OUT STD_LOGIC);,END ;,ARCHITECTURE,bhv,OF DFF3 IS,SIGNAL A,B : STD_LOGIC ;,BEGIN,PROCESS (CLK) BEGIN,IF CLKEVENT AND CLK = 1 THEN,A = D1; B = A; Q1 =B;,END IF;,END PROCESS ;,END ;,6.3.4 进程中的信号与变量赋值语句,【例6-9】,LIBRARY IEEE ;,USE IEEE.STD_LOGIC_1164.ALL ;,ENTITY DFF3 IS,PORT ( CLK,D1 : IN STD_LOGIC ;,Q1 : OUT STD_LOGIC);,END ;,ARCHITECTURE,bhv,OF DFF3 IS,BEGIN,PROCESS (CLK),VARIABLE A,B : STD_LOGIC ;,BEGIN,IF CLKEVENT AND CLK =1 THEN,A:= D1; B := A; Q1 = B;,END IF;,END PROCESS ;,END ;,6.3.4 进程中的信号与变量赋值语句,6.3.4 进程中的信号与变量赋值语句,图6-6例6-,8,的,RTL,电路 图6-7 例6-,7,的,RTL,电路,【例6-10】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY mux4 IS,PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC;,q : OUT STD_LOGIC);,END mux4;,ARCHITECTURE body_mux4 OF mux4 IS,signal,muxval,: integer range 7,downto,0;,BEGIN,process(i0,i1,i2,i3,a,b),begin,muxval,= 0;,if (a = 1) then,muxval,=,muxval,+ 1; end if;,if (b = 1) then,muxval, q q q q null;,end case;,end process;,END body_mux4;,【例6-11】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY mux4 IS,PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC;,q : OUT STD_LOGIC);,END mux4;,ARCHITECTURE body_mux4 OF mux4 IS,BEGIN,process(i0,i1,i2,i3,a,b),variable,muxval,: integer range 7,downto,0;,begin,muxval,:= 0;,if (a = 1) then,muxval,:=,muxval,+ 1; end if;,if (b = 1) then,muxval,:=,muxval,+ 2; end if;,case,muxval,is,when 0 = q q q q null;,end case;,end process;,END body_mux4;,图6-8 例6-10的,RTL,电路,例6-11的,RTL,电路,图6-10 例6-10的错误的工作时序,图6-11 例6-11的正确工作时序,6.4.1 三态门设计,【例6-12】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY tri_s IS,port ( enable : IN STD_LOGIC;,datain,: IN STD_LOGIC_VECTOR(7 DOWNTO 0);,dataout,: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);,END tri_s ;,ARCHITECTURE,bhv,OF tri_s IS,BEGIN,PROCESS(enable,datain,),BEGIN,IF enable = 1 THEN,dataout,=,datain,;,ELSE,dataout,=ZZZZZZZZ ;,END IF ;,END PROCESS;,END,bhv,;,图6-12 8位3态控制门电路,6.4 双向电路和三态控制电路设计,6.4.2 双向端口设计,【例6-13】,library,ieee,;,use,ieee,.std_logic_1164.all;,entity tri_state is,port (control : in std_logic;,in1: in std_logic_vector(7,downto,0);,q :,inout,std_logic_vector(7,downto,0);,x : out std_logic_vector(7,downto,0);,end tri_state;,architecture body_tri of tri_state is,begin,process(control,q,in1),begin,if (control = 0) then x = q ;,else q = in1; x=ZZZZZZZZ ;,end if;,end process;,end body_tri;,6.4.2 双向端口设计,图6-13 例6-13的仿真波形图,6.4.2 双向端口设计,【例6-14】,(以上部分同上例),process(control,q,in1),begin,if (control=0) then x = q ; q = ZZZZZZZZ;,else q = in1; x =ZZZZZZZZ;,end if;,end process;,end body_tri;,图6-14 例6-14的仿真波形图,6.4.2 双向端口设计,图6-15 例6-13的综合结果,6.4.2 双向端口设计,图6-16 例6-14的综合结果,6.4.3 三态总线电路设计,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY tristate2 IS,port ( input3, input2, input1, input0 :,IN STD_LOGIC_VECTOR (7 DOWNTO 0);,enable : IN STD_LOGIC_VECTOR(1 DOWNTO 0);,output : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);,END tristate2 ;,ARCHITECTURE multiple_drivers OF tristate2 IS,BEGIN,PROCESS(enable,input3, input2, input1, input0 ),BEGIN,IF enable = 00 THEN output = input3 ;,ELSE output Z);,END IF ;,IF enable = 01 THEN output = input2 ;,ELSE output Z);,END IF ;,IF enable = 10 THEN output = input1 ;,ELSE output Z);,END IF ;,IF enable = 11 THEN output = input0 ;,ELSE output Z);,END IF ;,END PROCESS;,END multiple_drivers;,【例6-15】,6.4.3 三态总线电路设计,图6-17 例6-15错误的综合结果,6.4.3 三态总线电路设计,library,ieee,;,use,ieee,.std_logic_1164.all;,entity tri is,port (,ctl,: in std_logic_vector(1,downto,0);,datain1, datain2,datain3, datain4 :,in std_logic_vector(7,downto,0);,q : out std_logic_vector(7,downto,0) );,end tri;,architecture body_tri of tri is,begin,q Z) ;,q Z) ;,q Z) ;,q Z) ;,end body_tri;,【例6-16】,6.4.3 三态总线电路设计,图6-18 例6-16正确的综合结果,6.4.4 顺序条件语句,IF,语句,(1),IF,条件句,Then,顺序语句,END IF ;,(2),IF,条件句,Then,顺序语句,ELSE,顺序语句,END IF ;,(3),IF,条件句,Then,IF,条件句,Then,.,END IF,END IF,(4),IF,条件句,Then,顺序语句,ELSIF,(5),顺序语句,IF,条件句,Then,.,ELSE,顺序语句,END IF,6.4.4 顺序条件语句,IF,语句,【例6-17】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY control_,stmts,IS,PORT (a, b, c: IN BOOLEAN;,output: OUT BOOLEAN);,END control_,stmts,;,ARCHITECTURE example OF control_,stmts,IS,BEGIN,PROCESS (a, b, c),VARIABLE n: BOOLEAN;,BEGIN,IF a THEN n := b;,ELSE n := c;,END IF;,output = n;,END PROCESS;,END example;,6.4.4 顺序条件语句,IF,语句,【例6-18】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY coder IS,PORT ( din : IN STD_LOGIC_VECTOR(0 TO 7);,output : OUT STD_LOGIC_VECTOR(0 TO 2) );,END coder;,ARCHITECTURE,behav,OF coder IS,SIGNAL SINT : STD_LOGIC_VECTOR(4 DOWNTO 0);,BEGIN,PROCESS (din),BEGIN,IF (din(7)=0) THEN output = 000 ;,ELSIF (din(6)=0) THEN output = 100 ;,ELSIF (din(5)=0) THEN output = 010 ;,ELSIF (din(4)=0) THEN output = 110 ;,ELSIF (din(3)=0) THEN output = 001 ;,ELSIF (din(2)=0) THEN output = 101 ;,ELSIF (din(1)=0) THEN output = 011 ;,ELSE output = 111 ;,END IF ;,END PROCESS ;,END,behav,;,表6-2 8线-3线优先编码器真值表,输 入 输 出,din0 din1 din2 din3 din4 din5 din6 din7 output0 output1 output2,x x x x x x x 0 0 0 0,x x x x x x 0 1 1 0 0,x x x x x 0 1 1 0 1 0,x x x x 0 1 1 1 1 1 0,x x x 0 1 1 1 1 0 0 1,x x 0 1 1 1 1 1 1 0 1,x 0 1 1 1 1 1 1 0 1 1,0 1 1 1 1 1 1 1 1 1 1,注:表中的“,x”,为任意,类似,VHDL,中的“”值。,6.4.4 顺序条件语句,IF,语句,6.5.1 进程语句格式,PROCESS,语句结构的一般表达格式如下,进程标号: ,PROCESS (,敏感信号参数表 ) ,IS,进程说明部分,BEGIN,顺序描述语句,END PROCESS ,进程标号;,6.5 进程语句结构,6.5 进程语句结构,6.5.2,PROCESS,组成,PROCESS,语句结构,进程说明,顺序描述语句,敏感信号参数表,信号赋值语句,变量赋值语句,进程启动语句,子程序调用语句,顺序描述语句,进程跳出语句,6.5.3 进程要点,1.,PROCESS,为一无,限循环语句,2.,PROCESS,中的顺序语句具有明显的顺序/并行运行双重性,3. 进程必须由敏感信号的变化来启动,4. 进程语句本身是并行语句,6.5 进程语句结构,【,例6-19】,ENTITY,mul,IS,PORT (a, b, c,selx,sely,: IN BIT;,data_out : OUT BIT );,END,mul,;,ARCHITECTURE ex OF,mul,IS,SIGNAL temp : BIT;,BEGIN,p_a : PROCESS (a, b,selx,),BEGIN,IF (,selx,= 0) THEN temp = a;,ELSE temp = b;,END IF;,END PROCESS p_a;,p_b: PROCESS(temp, c,sely,),BEGIN,IF (,sely,= 0) THEN data_out = temp;,ELSE data_out = c;,END IF;,END PROCESS p_b;,END ex;,5. 信号是多个进程间的通信线,6. 一个进程中只允许描述对应于一个时钟信号的同步时序逻辑,图6-19 例6-19的综合结果,6.6.1 固有延时,z = x XOR y AFTER 5ns ;,z = x XOR y ;,6.6.2 传输延时,z = TRANSPORT x AFTER 10 ns;,6.6.3 仿真,x = 9 ;,y = x ;,z = x AFTER 5ns ;,6.6 仿真延时,简易八音电子琴设计,核心技术是利用按键控制分频器的分频值,使芯片输出不同频率的波形。,1 261.63*2 Hz,2 493.88 Hz,3 440.00 Hz,4 392.00 Hz,5 349.23 Hz,6 329.63 Hz,7 293.66 Hz,1 261.63 Hz,简易八音电子琴设计,设计步骤:,确定主频率,可选择,6MHz,计算每个音调所对应的分频值,根据输入键值的不同确定分频器的分频值,111467,;,210216,;,39101,;,48590,;,57653,;,66818,;,76074,;,15733,。,编写,VHDL,语言,实验6-1 含异步清0和同步时钟使能的4位加法计数器,(1) 实验目的:,学习计数器的设计、仿真和硬件测试,进一步熟悉,VHDL,设计技术。,(2)实验原理:,图6-20是一含计数使能、异步复位和计数值并行预置功能的4位加法计数器,例6-20是其,VHDL,描述。由图6-20所示,图中间是4位锁存器;,rst,是异步清信号,高电平有效;,clk,是锁存信号;,D3:0,是4位数据输入端。当,ENA,为1时,多路选择器将加1器的输出值加载于锁存器的数据端;当,ENA,为0时将“0000”加载于锁存器。,实 验,实 验,图6-20 含计数使能、异步复位和计数值并行预置功能4位加法计数器,实验6-1 含异步清0和同步时钟使能的4位加法计数器,多路选择器,4位锁存器,4位加法器(加1器),实 验,实验6-1 含异步清0和同步时钟使能的4位加法计数器,(3)实验内容1:,按照第7章第4节的步骤,在,MAX+,plusII,上对例6-20进行编辑、编译、综合、适配、仿真。说明例6-20各语句的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形,。,【例6-20】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL;,ENTITY CNT4B IS,PORT (CLK : IN STD_LOGIC;,RST : IN STD_LOGIC;,ENA : IN STD_LOGIC;,OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);,COUT : OUT STD_LOGIC );,END CNT4B;,ARCHITECTURE,behav,OF CNT4B IS,SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);,BEGIN,P_REG: PROCESS(CLK, RST, ENA),BEGIN,IF RST = 1 THEN CQI = 0000;,ELSIF CLKEVENT AND CLK = 1 THEN,IF ENA = 1 THEN CQI = CQI + 1;,ELSE CQI = 0000;,END IF;,END IF;,OUTY = CQI ;,END PROCESS P_REG ;,COUT = CQI(0) AND CQI(1) AND CQI(2) AND CQI(3); -,进位输出,END,behav,;,实 验,实验6-1 含异步清0和同步时钟使能的4位加法计数器,(4)实验内容2:,引脚锁定以及硬件下载测试。,若目标器件是,EPF10K10,,建议选实验电路模式5(附,图1-7),用键8(,PIO7),控制,RST;,用键7(,PIO6),控制,ENA;,计数溢出,COUT,接发光管,D8(PIO15);OUTY,是计数输出,接数码1(,PIO19-PIO16,,低位靠右);时钟,CLK,接,clock2(,引脚号为43),通过跳线选择4,Hz,信号。引脚锁定后进行编译、下载和硬件测试实验。将实验过程和实验结果写进实验报告。,(5)附加内容:,分析说明本章例6-3和图6-3的工作原理和语句功能,并按照以上的实验要求对例6-3进行编译、下载和硬件测试。,(6)思考题1:,在例6-20中是否可以不定义信号,CQI,,而直,接用输出端口信号完成加法运算,即 :,OUTY LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S NULL ;,END CASE ;,END PROCESS ;,END ;,注意仿真信号的选择!,只需选择观察,输入和输出,总线信号即可,首先用鼠标,拖黑一段,注意仿真区,域时间坐标!,然后用鼠标,点击这里,输入“4”,表示,总线,A,输入,“0100”,输入信号设,置结束!,仿真结果,仿真结果完全正确!,引脚锁定,输入,A,的,最,高位:,A(3),可选择数码管5,显示译码输出,数码管7段,引脚名,PIO16,到,PIO22!,输入,A,的,次,高位:,A(2),输入,A,的,次,低位:,A(1),输入,A,的,最,低位:,A(0),A(3),的引,脚名为,PIO13,引脚名对应,的引脚号,选择实验板上,插有的目标器件,引脚对应情况,实验板位置 译码器信号 通用目标器件引脚名 目标器件,EP1K30TC144,引脚号,1、键8:,A3,PIO13 27,2、键7:,A2,PIO12,26,3、键6:,A1,PIO11 23,4、键5:,A0,PIO10,22,5、数码管5的,a,段,LED7S0,PIO16 30,5、数码管5的,b,段,LED7S1,PIO17,31,5、数码管5的,c,段,LED7S2,PIO18,32,5、数码管5的,d,段,LED7S3,PIO19,33,5、数码管5的,e,段,LED7S4,PIO20,36,5、数码管5的,f,段,LED7S5,PIO21,37,5、数码管5的,g,段,LED7S6,PIO22,38,4个键输入:,“1011”,对应显示:,“,B”,电路模式为:,“6”,4个键输入:,“0101”,对应显示:,“5,”,电路模式为:,“6”,实 验,实验6-2 7段数码显示译码器设计,图6-22 计数器和译码器连接电路的顶层文件原理图,实 验,(4)实验内容2:,引脚锁定及硬件测试。建议选实验电路模式6,用数码8显示译码输出(,PIO46-PIO40),,键8/7/6/5四位控制输入,硬件验证译码器的工作性能。,(5)实验内容3:,将例6-21改成16进制7段译码器重复以上实验。,(6)思考题:,讨论语句,WHEN OTHERS=NULL,的作用。对于不同的,VHDL,综合器,此句是否具有相同含义和功能?,(7)附加实验内容:,用例化语句按图6-22的方式,以例6-20和例6-21为底层元件,完成顶层文件设计,并重复以上实验过程。注意图6-22中的,tmp,是4位总线,,led,是7位总线。对于引脚锁定和实验,建议选电路模式6,用数码8显示译码输出,用键3作为时钟输入(每按2次键为1个时钟脉冲),或直接接时钟信号,clock0。,(8),实验报告:,根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和实验过程;设计程序、程序分析报告、仿真波形图及其分析报告。,实验6-2 7段数码显示译码器设计,实 验,实验6-3 数控分频器的设计,(1)实验目的:,学习数控分频器的设计、分析和测试方法。,(2)实验原理:,数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,例6-22的数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可。,(3)实验内容1:,根据图6-23的波形提示,分析例6-22中的各语句功能、设计原理、逻辑功能,并详述进程,P_REG,和,P_DIV,的作用。,图6-23 当给出不同输入值,D,时,,FOUT,输出不同频率(,CLK,周期=50,ns),【例6-22】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL;,ENTITY PULSE IS,PORT ( CLK : IN STD_LOGIC;,D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);,FOUT : OUT STD_LOGIC );,END;,ARCHITECTURE one OF PULSE IS,SIGNAL FULL : STD_LOGIC;,BEGIN,P_REG: PROCESS(CLK),VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0);,BEGIN,IF CLKEVENT AND CLK = 1 THEN,IF CNT8 = 11111111 THEN,CNT8 := D; -,当,CNT8,计数计满时,输入数据,D,被同步预置给计数器,CNT8,FULL = 1; -,同时使溢出标志信号,FULL,输出为高电平,ELSE CNT8 := CNT8 + 1; -,否则继续作加1计数,FULL = 0; -,且输出溢出标志信号,FULL,为低电平,END IF;,END IF;,END PROCESS P_REG ;,P_DIV: PROCESS(FULL),VARIABLE CNT2 : STD_LOGIC;,BEGIN,IF FULLEVENT AND FULL = 1 THEN,CNT2 := NOT CNT2; -,如果溢出标志信号,FULL,为高电平,,D,触发器输出取反,IF CNT2 = 1 THEN FOUT = 1;,ELSE FOUT = 0;,END IF;,END IF;,END PROCESS P_DIV ;,END;,END ;,实 验,(4)实验内容2:,输入不同的,CLK,频率和预置值,D,,给出如例6-22的时序波形。,(5)实验内容3:,在实验系统上硬件验证例6-22的功能。如果目标器件是,EPF10K10,,建议选实验电路模式1,键2/键1(,PIO7-PIO0),负责输入8位预置数,D;CLK,由,clock0,输入,频率可选65536,Hz,或更高(确保分频后落在音频范围);输出,FOUT,接扬声器(,SPKER:PIN3)。,编译下载后进行硬件测试:改变键2/键1的输入值,可听到不同音调的声音。,(6)实验附加内容:,将例6-22扩展成16位分频器,并提出此项设计的数项实用示例,如,PWM,的设计等。,(7)思考题:,怎样利用2个例6-22给出的模块设计一个电路,,使其输出方波的正负脉宽的宽度分别由两个8位输入数据控制?,(8)实验报告:,根据以上的要求,将实验项目分析设计,仿真和测试写入实验报告。,实验6-3 数控分频器的设计,实 验,实验6-4,4位十进制频率计,设计,(1)实验目的:,设计4位十进制频率计,学习较复杂的数字系统设计方法。,(2)实验原理:,对于频率测试,在第4章中已作了部分说明。根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号并为下一测频计数周期作准备的计数器清0信号。这3个信号可以由一个测频控制信号发生器产生,即图6-24中的,TESTCTL。,设计要求是:,TESTCTL,的计数使能信号,CNT_EN,能产生一个1秒脉宽的周期信号,并对频率计的每一计数器,CNT10,的,ENA,使能端进行同步控制。当,CNT_EN,高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号,LOAD,的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器,REG4B,中,并由外部的7段译码器译出,显示计数值。设置锁存器的好处是数据显示稳定,不会由于周期性的清0信号而不断闪烁。锁存信号后,必须有一清0信号,RST_CNT,对计数器进行清零,为下1秒的计数操作作准备。其工作时序如图6-24。,实 验,(3)实验内容1:,根据例6-20、例6-23、例6-24以及图6-25说明图6-24描述的4位十进制频率计的工作原理,并根据图6-24用例化语句写出频率计的顶层文件,并给出其测频时序波形及其分析。,(4)实验内容2:,频率计设计硬件验证。编译、综合和适配频率计顶层设计文件,并编程下载进入目标器件中。如果目标器件是,EPF10K10,,建议选实验电路模式0,4个数码管显示测频输出;待测频率输入,FIN,由,clock0,输入,频率可选4,Hz、256HZ.,或更高;1,HZ,测频控制信号,F1HZ,可由,clock2,输入(用跳线选1,Hz)。,(5),附加实验内容:,将频率计扩展为8位十进制频率计,并在测频速度上给予优化。,(6)实验报告:,给出频率计设计的完整实验报告。,实验6-4,4位十进制频率计,设计,【例6-23】,LIBRARY IEEE; -,测频控制器,USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL;,ENTITY TESTCTL IS,PORT ( CLKK : IN STD_LOGIC; - 1Hz,CNT_EN,RST_CNT,LOAD : OUT STD_LOGIC);,END TESTCTL;,ARCHITECTURE,behav,OF TESTCTL IS,SIGNAL DIV2CLK : STD_LOGIC;,BEGIN,PROCESS( CLKK ),BEGIN,IF CLKKEVENT AND CLKK = 1 THEN DIV2CLK = NOT DIV2CLK;,END IF;,END PROCESS;,PROCESS (CLKK, DIV2CLK),BEGIN,IF CLKK=0 AND Div2CLK=0 THEN RST_CNT = 1;,ELSE RST_CNT = 0;,END IF;,END PROCESS;,LOAD = NOT DIV2CLK ; CNT_EN = DIV2CLK;,END,behav,;,【例6-24】,LIBRARY IEEE; -4,位锁存器,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY REG4B IS,PORT ( LOAD : IN STD_LOGIC;,DIN : IN STD_LOGIC_VECTOR(3 DOWNTO 0);,DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );,END REG4B;,ARCHITECTURE,behav,OF REG4B IS,BEGIN,PROCESS(LOAD, DIN),BEGIN,IF LOADEVENT AND LOAD=1 THEN DOUT=DIN;-,时钟到来时,锁存输入数据,END IF;,END PROCESS;,END,behav,;,实验6-4,4位十进制频率计,设计,图6-24 4位十进制频率计顶层文件原理图,实验6-4,4位十进制频率计,设计,图6-25 频率计测频控制器,TESTCTL,测控时序图,测得频率12.009600,MHz,注意时钟频率设置!,选用电路模式0,以,CLOCK0,作为待测频率:,f=12MHz,以,CLOCK2,作为测频,门控信号:,f=1Hz,测得频率256,Hz,以,CLOCK0,作为待测频率:,f=256Hz,测得频率50.000706,MHz,测得频率65536,Hz,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!