Quartus II设计作业 - 图文

更新时间:2023-10-20 06:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

JINGGANGSHAN UNIVERSITY 《EDA技术》课程作业

学 院:电子与信息工程学院 专 业:电子信息科学与技术 姓 名: 班 级: 11电专 学 号: 指导老师: 过继红

目录

Quartus II设计作业(实验一) ................................................................ 错误!未定义书签。

实验名称:3-8译码器 .......................................................................... 错误!未定义书签。 Quartus II设计作业(实验二) ................................................................ 错误!未定义书签。

实验名称:四选一多路选择器 ............................................................. 错误!未定义书签。 Quartus II设计作业(实验三) ................................................................ 错误!未定义书签。

实验名称:十进制加法计数器 ............................................................. 错误!未定义书签。 Quartus II设计作业(实验四) ................................................................ 错误!未定义书签。

实验名称:LPM计数器模块使用方法 .................................................. 错误!未定义书签。 Quartus II设计作业(实验五) ................................................................ 错误!未定义书签。

实验名称:ADC0809 采样状态机 ......................................................... 错误!未定义书签。 Quartus II设计作业(实验六) ................................................................ 错误!未定义书签。

实验名称:序列检测器设计 ................................................................. 错误!未定义书签。 Quartus II设计作业(实验七) ................................................................ 错误!未定义书签。

实验名称:八位乘法累加器 ................................................................. 错误!未定义书签。 Quartus II设计作业(实验八) ................................................................ 错误!未定义书签。

实验名称:全加器 ................................................................................. 错误!未定义书签。 Quartus II设计作业(实验九) ................................................................ 错误!未定义书签。

实验名称:LPM随机存储器的设置和使用 .......................................... 错误!未定义书签。 Quartus II设计作业(实验十) ................................................................ 错误!未定义书签。

实验名称:LPM_ROM的定制和使用范例 .............................................. 错误!未定义书签。 Quartus II设计作业(实验十一) ............................................................ 错误!未定义书签。

实验名称:LPM嵌入式锁相环调用 ...................................................... 错误!未定义书签。 Quartus II设计作业(实验十二) ............................................................ 错误!未定义书签。

实验名称:FIFO定制 ............................................................................ 错误!未定义书签。 Quartus II设计作业(实验十三) ............................................................ 错误!未定义书签。

实验名称:NCO核数控振荡器使用方法 .............................................. 错误!未定义书签。 Quartus II设计作业(实验十四) ............................................................ 错误!未定义书签。

实验名称:使用IP core 设计FIR滤波器 ........................................ 错误!未定义书签。 Quartus II设计作业(实验十五) ............................................................ 错误!未定义书签。

实验名称:二选一数据选择器 ............................................................. 错误!未定义书签。 Quartus II设计作业(实验十六) ............................................................ 错误!未定义书签。

实验名称:状态机图形编辑设计 ......................................................... 错误!未定义书签。 Quartus II设计作业(实验十七) ............................................................ 错误!未定义书签。

实验名称:时钟 ..................................................................................... 错误!未定义书签。 Quartus II设计作业(实验十八) ............................................................ 错误!未定义书签。

实验名称:交通灯 ................................................................................. 错误!未定义书签。

Quartus II设计作业(实验一)

班级:11电专班 姓名: 学号:110921012 实验名称:3-8译码器 一、实验步骤

原理图编辑输入流程

1打开原理图编辑窗

2建立一个初始原理图

3原理图文件存盘

4建立原理图文件工程 ① 打开并新建工程管理窗口

1

② 将设计文件加入工程中

③ 选择目标芯片

④ 工具选择

2

⑤ 结束设置

5绘制原理图

6原理图编译

全程编译后无错信息报告

3

时序仿真

1、 打开波形编辑器

激励信号波形编辑窗口

2、 设置仿真时间区域

4

3、 波形文件存盘

4、 将工程的端口信号节点选入波形编辑器中

5、 编辑输入波形

5

6、 仿真器参数设置

7、 启动仿真器

8、 观察仿真结果

6

仿真结果:由仿真波形可以看出,a,b, c三个输入端,和D0-D7八个输出端,二进制译码。

Quartus II设计作业(实验二)

班级:11电专班 姓名: 学号:110921012 实验名称:四选一多路选择器

一.用IF_ELSE语句的表达方式写的VHDL程序如下:

① 四选一多路选择器的VHDL描述如下: library ieee;

use ieee.std_logic_1164.all; entity mux41 is

port ( input:in std_logic_vector(3 downto 0); sel:in std_logic_vector(1 downto 0); y:out std_logic); end mux41;

architecture rtl of mux41 is begin

process(input,sel) begin

if (sel=\ then y<=input(0);

elsif (sel=\ then y<=input(1);

elsif (sel=\ then y<=input(2); else y<=input(3); end if; end process; end rtl;

② 四选一多路选择器的电路仿真波形图如下图一所示:

7

图一 四选一多路选择器的电路仿真波形图

由上图可知:

当sel=11时,y=intput3; 当sel=10时,y=intput2; 当sel=01时,y=intput1; 当sel=00时,y=intput0; 实现了四选一功能。

③ 四选一多路选择器的引脚图如下图二:

图二 四选一多路选择器的引脚图

④ 编译结果如下图三:

图三 编译结果

8

⑤ RTL电路图结果如下图四:

图四 RTL电路图

二.用CASE语句的表达方式写的VHDL程序如下:

① 四选一多路选择器的VHDL描述如下:

library ieee;

use ieee.std_logic_1164.all; entity mux41a is

port(s1,s2: in std_logic; a,b,c,d: in std_logic; z: out std_logic); end entity mux41a;

architecture art of mux41a is signal s:std_logic_vector(1 downto 0); begin s<=s1&s2;

process (s1,s2,a,b,c,d) begin case s is

when \ when \ when \ when \ when others =>z<=null;

9

end case; end process; end art;

② 四选一多路选择器的电路仿真波形图如下图五所示:

图五 四选一多路选择器的电路仿真波形图

由上图可知(s<=s1&s2):

当s=00时,z=a; 当s=01时,z=b; 当s=10时,z=c; 当s=11时,z=d; 实现了四选一功能。

③ 四选一多路选择器的引脚图如下图六:

图六 四选一多路选择器的引脚图

④ 编译报告如下图七:

10

图七 编译报告

⑤ RTL电路图如下图七所示:

图八 RTL电路图

三.用WHEN_ELSE语句的表达方式写的VHDL程序如下:

① 四选一多路选择器的VHDL描述如下:

library ieee;

use ieee.std_logic_1164.all; entity mux41c is

port(i0, i1, i2, i3, a, b : in std_logic; q : out std_logic);

end mux41c;

architecture rtl of mux41c is

signal sel : std_logic_vector (1 downto 0); begin

sel<=b & a;

q<=i0 when sel =\ else

i1 when sel = \ i2 when sel =\

11

reg_fstate <= state1; END IF;

reg_output1 <= '0'; WHEN state3 =>

IF (((input1 = '1') OR (input2 = '1'))) THEN reg_fstate <= state1; ELSE

reg_fstate <= state3; END IF;

reg_output1 <= '1'; WHEN OTHERS => reg_output1 <= 'X';

report \ END CASE; END IF; END PROCESS; END BEHAVIOR;

Quartus II设计作业(实验十七)

班级:11电专班 姓名: 学号:110921012 实验名称:时钟 一电路原理图

图一 原理图

二 编译报告

42

图二 编译报告

三 模块程序 1 计时模块 library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity mincount is port(en1,en2,res,clk :in std_logic; ca,cp :out std_logic; a,b :out std_logic_vector(3 downto 0)); end mincount;

architecture rtl of mincount is signal aout,bout:std_logic_vector(3 downto 0); signal cout:std_logic; begin process(en1,en2,clk,res) begin if(res='0')then aout<=\ bout<=\ cout<='0'; elsif(clk'event and clk='1')then if(en1='1' or en2='0')then if(bout>4)then if(aout>9)then aout<=\ bout<=\ cout<='1'; else aout<=aout+1; end if; else

43

if(aout=9)then aout<=\ bout<=bout+1; else aout<=aout+1; cout<='0'; end if; end if; end if; end if; end process;

cp <= bout(2) and bout(1) and aout(0) and aout(3); a<=aout; b<=bout; ca<=cout; end rtl;

2 显示模块 library ieee;

use ieee.std_logic_1164.all;

entity disp is port(d:in std_logic_vector(3 downto 0); q:out std_logic_vector(6 downto 0)); end disp;

architecture rtl of disp is begin process(d) begin case d is when\ when\ when\ when\ when\ when\ when\ when\ when\ when others=>q<=\ end case; end process; end rtl;

Quartus II设计作业(实验十八)

44

班级:11电专班 姓名: 学号:110921012 实验名称:交通灯

一 文本输入法输入程序 library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;--加载库文件

entity traffic_ctrl is--定义实体 generic (

green1_cnt :integer:=25;--定义主通道绿灯亮的时间,这里为25秒 yellow1_cnt:integer:=5; --定义主通道黄灯亮的时间,这里为5秒 green2_cnt :integer:=15;--定义支路绿灯亮的时间,这里为15秒 yellow2_cnt:integer:=5 --定义支路黄灯亮的时间,这里为5秒 ); port(

clk: in std_logic;--时钟信号 rst: in std_logic;--复位信号

lgt1_red: out std_logic;--主通道红灯控制信号 lgt1_yellow: out std_logic;--主通道黄灯控制信号 lgt1_green: out std_logic;--主通道绿灯控制信号 lgt2_red: out std_logic;--支路红灯控制信号 lgt2_yellow: out std_logic;--支路黄灯控制信号 lgt2_green: out std_logic--支路绿灯控制信号 );

end entity traffic_ctrl;

architecture rtl of traffic_ctrl is--定义结构体

type states is (st0,st1,st2,st3);--定义控制器各种状态 signal state:states:=st0;--初始化状态

signal cnt : integer range 0 to 30:=1;--定义计数器

signal cnt_enb :std_logic:='0';--初始化计数器使能信号 begin

process(clk,rst) begin

if(rst='1') then--复位信号为高则执行复位操作 state<=st0; cnt<=1;

elsif(rising_edge(clk)) then--时钟上升沿 if(cnt_enb='1') then--计数器计数 cnt<=cnt+1; else

cnt<=1; end if;

case state is

45

when st0=>--主通道绿灯亮了一段时间时转换状态st1 if(cnt=green1_cnt) then state<=st1; else

state<=st0; end if;

when st1=>--主通道黄灯亮了一段时间时转换状态st2 if(cnt=yellow1_cnt) then state<=st2; else

state<=st1; end if;

when st2=>--支路绿灯亮了一段时间时转换状态st3 if(cnt=green2_cnt) then state<=st3; else

state<=st2; end if;

when st3=>--支路黄灯亮了一段时间时转换状态st0 if(cnt=yellow2_cnt) then state<=st0; else

state<=st3; end if; end case; end if; end process; process(state) begin

case state is

when st0=>--St0表示主路绿灯亮、支路红灯亮 lgt1_red<='0'; lgt1_yellow<='0'; lgt1_green<='1'; lgt2_red<='1'; lgt2_yellow<='0'; lgt2_green<='0'; cnt_enb<='1';

if(cnt=green1_cnt) then cnt_enb<='0'; end if;

when st1=>--St1表示主路黄灯亮、支路红灯亮 lgt1_red<='0'; lgt1_yellow<='1';

46

6、 4位计数器描述

7、 quartus II生成的计数器文件CNT4.VHD

LIBRARY ieee;

USE ieee.std_logic_1164.all; LIBRARY lpm; USE lpm.all; ENTITY CNT4 IS PORT ( aclr : IN STD_LOGIC ; clk_en : IN STD_LOGIC ; clock : IN STD_LOGIC ; data : IN STD_LOGIC_VECTOR (3 DOWNTO 0); sload : IN STD_LOGIC ; updown : IN STD_LOGIC ; cout : OUT STD_LOGIC ;

q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) );

END CNT4;

ARCHITECTURE SYN OF cnt4 IS SIGNAL sub_wire0 : STD_LOGIC ; SIGNAL sub_wire1 : STD_LOGIC_VECTOR (3 DOWNTO 0); COMPONENT lpm_counter GENERIC ( lpm_direction : STRING; lpm_modulus : NATURAL; lpm_port_updown : STRING; lpm_type : STRING; lpm_width : NATURAL ); PORT (

17

sload : IN STD_LOGIC ;

clk_en : IN STD_LOGIC ; aclr : IN STD_LOGIC ; clock : IN STD_LOGIC ; cout : OUT STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); data : IN STD_LOGIC_VECTOR (3 DOWNTO 0); updown : IN STD_LOGIC ); END COMPONENT; BEGIN cout <= sub_wire0; q <= sub_wire1(3 DOWNTO 0); lpm_counter_component : lpm_counter GENERIC MAP ( lpm_direction => \ lpm_modulus => 12, lpm_port_updown => \ lpm_type => \ lpm_width => 4 ) PORT MAP ( sload => sload, clk_en => clk_en, aclr => aclr, clock => clock, data => data, updown => updown, cout => sub_wire0, q => sub_wire1 ); END SYN;

8、 对CNT4.VHD例化程序

LIBRARY ieee;

USE ieee.std_logic_1164.all; ENTITY CNT4BIT IS

PORT (CLK,RST,ENA,SLD,UD:IN std_logic;

DIN :IN std_logic_vector(3 DOWNTO 0); COU :OUT std_logic;

DOUT :OUT std_logic_vector(3 DOWNTO 0)); END ENTITY CNT4BIT;

ARCHITECTURE TRANSLATED OF CNT4BIT IS COMPONENT CNT4

PORT(ACLR,CLK_EN,CLOCK,SLOAD,UPDOWN:IN std_logic; DATE :IN std_logic_vector(3 DOWNTO 0);

18

cout :OUT std_logic;

Q :OUT std_logic_vector(3 DOWNTO 0)); END COMPONENT; BEGIN

U1 : CNT4 PORT MAP(SLOAD=>SLD,CLK_EN=>ENA,ACLR=>RST,

cout=>COUT,CLOCK=>CLK,DATE=>DIN,UPDOWN=>UD,Q=>DOUT);

END ARCHITECTURE TRANSLATED;

二、 创建工程与仿真测试

仿真波形

三、 原理图输入设计

1、仿真电路

2、仿真波形

仿真结果:由波形仿真图可以看出这是12进制数计数器的仿真波形,由波形图可以看出ENA是使能端,高电平有效,RST是复位端,高电平复位,2

19

个SLD加载信号在没有CLK上升沿出发生时,无法进行加载,所以SLD是同步的。逢11进位端进一。

Quartus II设计作业(实验五)

班级:11电专班 姓名: 学号:110921012 实验名称:ADC0809 采样状态机

① VHDL程序如下所示:

library ieee;

use ieee.std_logic_1164.all; entity ADC0809 is

port (d:in std_logic_vector(7 downto 0); clk,rst:in std_logic; eoc:in std_logic; ale:out std_logic; start,oe:out std_logic; adda,lock_t:out std_logic;

q:out std_logic_vector(7 downto 0)); end ADC0809;

architecture behav of ADC0809 is type states is(s0,s1,s2,s3,s4); signal cs,next_state:states :=s0;

signal regl :std_logic_vector(7 downto 0); signal lock :std_logic; begin

adda<='0';lock_t <=lock; com:process(cs,eoc) begin

case cs is

when s0=>ale<='0';start<='0';oe<='0';lock<='0';next_state<=s1; when s1=>ale<='1';start<='1';oe<='0';lock<='0';next_state<=s2; when s2=>ale<='0';start<='0';oe<='0';lock<='0';

20

if (eoc='1') then next_state<=s3; else next_state<=s2; end if;

when s3=>ale<='0';start<='0';oe<='1';lock<='0';next_state<=s4; when s4=>ale<='0';start<='0';oe<='1';lock<='1';next_state<=s0; when others=>ale<='0';start<='0';oe<='0';lock<='0';next_state<=s0; end case; end process com; reg:process(clk,rst) begin

if rst='1' then cs<=s0;

elsif clk'event and clk='1' then cs<=next_state;end if; end process reg;

latch1:process(lock)

begin

if lock='1' and lock'event then regl<=d; end if; end process latch1;

q<=regl; end behav;

② 编译报告如下图一所示:

图一 编译报告

21

本文来源:https://www.bwwdw.com/article/j5bf.html

Top