可编程逻辑器件控制VHDL 结课作业 结课论文_第1页
可编程逻辑器件控制VHDL 结课作业 结课论文_第2页
可编程逻辑器件控制VHDL 结课作业 结课论文_第3页
可编程逻辑器件控制VHDL 结课作业 结课论文_第4页
可编程逻辑器件控制VHDL 结课作业 结课论文_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、可编程逻辑电路原理与设计作业 姓名:蔺子杰 学号:10021202 专业:电子信息工程 完成日期:2012年12月 一.实验报告1.实验题目 3×8译码器的VHDL设计2.实验说明译码器:把输入的数码解出其对应的数码。NxM译码器:N条输入线及M条输出线设计原理:先判断使能端口EN状态,当其满足高电平时,判断三个输入端口A2,A1,A0的状态来决定输出。若使能端口为低电平则固定输出不受逻辑输出A2,A1,A0的影响。使能有效时按照三个输入状态决定八个输出的状态。3. 实验步骤1)创建新工程:打开QuartusII软件,在主界面中执行FILE>New project Wizard

2、在向导的第一页设置工程文件夹,工程名称及顶层实体名称。点击Next按钮,进入添加设计文件对话框。点击Next进入选择目标芯片对话框,ACEX1K系列EP1K30QC208-3。点击Next进入EDA工具设置页面。在新建工程向导最后,QuartusII给出新建工程摘要信息,点击Finish完成向导。2)程序输入:程序代码:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity demo isPort ( A : in STD_LOGIC

3、_VECTOR (2 downto 0);EN: in STD_LOGIC;Y : out STD_LOGIC_VECTOR (7 downto 0);end demo;architecture DEC of demo issignal indata:STD_LOGIC_VECTOR (2 downto 0);beginprocess(A,EN)beginindata(0)<=A(0);indata(1)<=A(1);indata(2)<=A(2);if(EN='1')thencase indata iswhen "000" =>Y&

4、lt;="00000001"when "001" =>Y<="00000010"when "010" =>Y<="00000100"when "011" =>Y<="00001000"when "100" =>Y<="00010000"when "101" =>Y<="00100000"when "110&q

5、uot; =>Y<="01000000"when "111" =>Y<="10000000"when others=>Y<="11111111"end case;end if;end process;end DEC;3) 编译:启动编译:执行菜单processing->start compilation。 在编译结束后,会出现以下编译报告:4) 仿真:执行File->NEW,选中Other Files中vector waveform file,点击OK新建空白文件,名

6、位waveform.vwf, 执行file->save as保存。默认仿真时间1us.在波形编辑器左边Name列空白处双击,打开添加仿真信号对话框。点击Node finder打开对话框,从filter列表中pins:all,然后点击list,添加节点。通过波形编辑器左侧的信号设置工具栏,编辑输入波形。当需要设定某段波形时,将其用鼠标拖黑,然后用工具栏中的按钮赋值。信号波形编辑完成后存盘。执行processing-start simulation.从波形图判断输入、输出状态是否符合设计要求。输出状态如下图所示,符合要求。在仿真后,会输出符合状态的波形:5) 对器件进行处理:执行assign

7、ments-assignment editor,打开管脚分配图, 选择左边上角pin进行管脚分配。管脚分配图,如图所示:在这部分实验中,除了管脚分配之外,还包括对器件进行编程:将ByteBlaster电缆一端与PC机并口延长线相连,另一端与试验箱JTAG下载口相连,并打开试验箱电源。执行Tools->programmer,打开编程器窗口。点击Hardware setup,在其下拉列表中选择ByteBlasterMV or ByteBlasterII。在编程窗口中,勾选program/configure,然后点击start,再进行一次编译,最后进行程序下载。3. 实验结果通过实验台上的开关

8、控制点亮希望点亮的灯,即3-8译码器的硬件模拟功能。2. BPSK的调制、解调的VHDL设计1.BPSK原理:BPSK使用了基准的正弦波和相位反转的波浪,使一方为0,另一方为1,从而可以同时传送接受2值(1比特)的信息。由于最单纯的键控移相方式虽抗噪音较强但传送效率差,所以常常使用利用4个相位的QPSK和利用8个相位的8PSK。在大多数情况下,数字调制是利用数字信号的离散值去键控载波。对载波的幅度、频率或相位进行键控,便可获得ASK、FSK、PSK等。这三种数字调制方式在抗干扰噪声能力和信号频谱利用率等方面,以相干PSK的性能最好,目前已在中、高速传输数据时得到广泛应用。2.BPSK调制解调原

9、理:调相信号是通过载波的相位变化来传输消息的,它具有恒定的包络,而且频率上也无法分离,所以不能采用包络解调,只能采用相干解调。原理图如下:3. BPSK调制:程序代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity lyn is port(mux_clock:in std_logic; m_sel :in std_logic_vector(1 downto 0); ref_clk :out std_logic; data_

10、out :out std_logic; bpsk_out :out std_logic );end entity;architecture behave of lyn is component dff port(d,clk:in std_logic; q:out std_logic); end component;signal a:std_logic_vector(0 to 3);signal temp0:std_logic;signal out0,out1,out2,out3:std_logic;signal ref_clock:std_logic;beginref_clock<=mu

11、x_clock;ref_clk<=ref_clock;data0:process(mux_clock) -产生时钟信号的八分频 variable cnt:integer range 0 to 8; begin if mux_clock'event and mux_clock='1' then cnt:=cnt+1; if cnt<=4 then out0 <='1' elsif cnt<8 then out0<='0' else cnt:=0; end if; end if; end process data

12、0;data1:process(mux_clock) -时钟信号十六分频电路 variable cnt:integer range 0 to 16; begin if mux_clock'event and mux_clock='1' then cnt:=cnt+1; if cnt<=8 then out1<='1' elsif cnt<16 then out1<='0' else cnt:=0; end if; end if; end process data1;a(0)<=temp0; -反馈系数为23的

13、七位伪码序列u13_1:dff port map(a(0),mux_clock,a(1); u13_2:dff port map(a(1),mux_clock,a(2);u13_3:dff port map(a(2),mux_clock,a(3);temp0<=not (a(2) xor a(3);out2<=not a(3);out3<='0' -获取全零序列 output:process(mux_clock) -通过m_sel选择某一输出信号,并对其进行BPSK编码 begin case m_sel is when "00" =>

14、data_out<=out0;bpsk_out<=out0 xor ref_clock; when "01" =>data_out<=out1;bpsk_out<=out1 xor ref_clock; when "10" =>data_out<=out2;bpsk_out<=out2 xor ref_clock; when "11" =>data_out<=out3;bpsk_out<=out3 xor ref_clock; when others=>data_

15、out<=out3;bpsk_out<=out3 xor ref_clock; end case; end process output;end behave;仿真后的波形如图所示:4. BPSK解调程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;ENTITY li IS PORT ( clk : IN std_logic; start : IN std_logic; a: IN std_logic; b : OU

16、T std_logic);END li;ARCHITECTURE behave OF li ISSIGNAL c: integer RANGE 0 TO 3; BEGINPROCESS (clk)BEGINIF (clk'event AND clk='1') THENIF start='0' THEN c<=0;ELSIF c=0 THEN c<=c+1; IF a='1' THEN b<='1'ELSE b<='0'END IF;ELSIF c=3 THEN c<=0;ELS

17、E c<=c+1;END IF;END IF;END PROCESS;END behave;仿真后的波形为:由上图可知:当输入的已调波信号a相位为0时,输出的基带信号b为高电平。当输入的相位为时,输出的基带信号b为低电平。说明解调成功。 三八位七段数码管动态显示的VHDL设计1.七段显示器显示原理 七段显示器可用来显示单一的十进制或十六进制的数字,它是由八个发光二极管所构成的( 每一个二极管依位置不同而赋予不同的名称,请参见图4.1 ) 。我们可以简单的说,要产生数字,便是点亮特定数据的发光二极管。例如要产生数字0,须只点亮A、B、C、D、E、F等节段的发光二极管;要产生数字5,则须点亮

18、A、C、D、F、G等节段发光二极管,以此类推,参见图4.6。因此,以共阳极七段显示器而言,要产生数字0,必须控制Cyclone II FPGA芯片接连至A、B、C、D、E、F 等接脚呈现“低电位”,使电路形成通路状态。表4.1则为共阳极七段显示器显示之数字编码。本实验要求完成的任务是在时钟信号的作用下,通过输入的键值在数码管上显示相应的键值。2. 程序代码解析library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity exp4 is -

19、exp4为实体名 port( clk : in std_logic; -定义动态扫描时钟信号 key : in std_logic_vector(3 downto 0); -定义四位输入信号 ledag : out std_logic_vector(6 downto 0); -定义七位输出信号 del : out std_logic_vector(2 downto 0) -定义八位数码管位置显示信号 end exp4; -结束实体architecture whbkrc of exp4 is -whbkrc为结构体名 begin -以begin为标志开始结构体的描述 process(clk) -

20、进程,clk变化时启动进程 variable dount : std_logic_vector(2 downto 0); -变量,计数 begin if clk'event and clk='1' then-检测时钟上升沿 dount:=dount+1;-计数器dount累加 end if; del<=dount; -片选信号 end process;-结束进程 process(key) -进程,key变化时启动进程 begin case key is when "0000" => ledag <="0111111&quo

21、t;-七段数码管显示 0 when "0001" => ledag <="0000110"-1 when "0010" => ledag <="1011011"-2 when "0011" => ledag <="1001111"-3 when "0100" => ledag <="1100110"-4 when "0101" => ledag <="1101101"-5 when "0110" => ledag <="1111101"-6 when "0111" => ledag <="0000111"-7 when "1000" => ledag <="

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论