可编程逻辑器件控制VHDL 结课作业 结课论文文档格式.docx

上传人:b****6 文档编号:17626597 上传时间:2022-12-07 格式:DOCX 页数:11 大小:200.96KB
下载 相关 举报
可编程逻辑器件控制VHDL 结课作业 结课论文文档格式.docx_第1页
第1页 / 共11页
可编程逻辑器件控制VHDL 结课作业 结课论文文档格式.docx_第2页
第2页 / 共11页
可编程逻辑器件控制VHDL 结课作业 结课论文文档格式.docx_第3页
第3页 / 共11页
可编程逻辑器件控制VHDL 结课作业 结课论文文档格式.docx_第4页
第4页 / 共11页
可编程逻辑器件控制VHDL 结课作业 结课论文文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

可编程逻辑器件控制VHDL 结课作业 结课论文文档格式.docx

《可编程逻辑器件控制VHDL 结课作业 结课论文文档格式.docx》由会员分享,可在线阅读,更多相关《可编程逻辑器件控制VHDL 结课作业 结课论文文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

可编程逻辑器件控制VHDL 结课作业 结课论文文档格式.docx

useIEEE.STD_LOGIC_UNSIGNED.ALL;

entitydemois

Port(A:

inSTD_LOGIC_VECTOR(2downto0);

EN:

inSTD_LOGIC;

Y:

outSTD_LOGIC_VECTOR(7downto0));

enddemo;

architectureDECofdemois

signalindata:

STD_LOGIC_VECTOR(2downto0);

begin

process(A,EN)

begin

indata(0)<

=A(0);

indata

(1)<

=A

(1);

indata

(2)<

=A

(2);

if(EN='

1'

)then

caseindatais

when"

000"

=>

Y<

="

00000001"

;

001"

00000010"

010"

00000100"

011"

00001000"

100"

00010000"

101"

00100000"

110"

01000000"

111"

10000000"

whenothers=>

11111111"

endcase;

endif;

endprocess;

endDEC;

3)编译:

启动编译:

执行菜单processing->

startcompilation。

在编译结束后,会出现以下编译报告:

4)仿真:

执行File->

NEW,选中OtherFiles中vectorwaveformfile,点击OK新建空白文件,名位waveform.vwf,执行file->

saveas保存。

默认仿真时间1us.

在波形编辑器左边Name列空白处双击,打开添加仿真信号对话框。

点击Nodefinder打开对话框,从filter列表中pins:

all,然后点击list,添加节点。

通过波形编辑器左侧的信号设置工具栏,编辑输入波形。

当需要设定某段波形时,将其用鼠标拖黑,然后用工具栏中的按钮赋值。

信号波形编辑完成后存盘。

执行processing-startsimulation.从波形图判断输入、输出状态是否符合设计要求。

输出状态如下图所示,符合要求。

在仿真后,会输出符合状态的波形:

5)对器件进行处理:

执行assignments-assignmenteditor,打开管脚分配图,选择左边上角pin进行管脚分配。

管脚分配图,如图所示:

在这部分实验中,除了管脚分配之外,还包括对器件进行编程:

将ByteBlaster电缆一端与PC机并口延长线相连,另一端与试验箱JTAG下载口相连,并打开试验箱电源。

执行Tools->

programmer,打开编程器窗口。

点击Hardwaresetup,在其下拉列表中选择ByteBlasterMVorByteBlasterII。

在编程窗口中,勾选program/configure,然后点击start,再进行一次编译,最后进行程序下载。

3.实验结果

通过实验台上的开关控制点亮希望点亮的灯,即3-8译码器的硬件模拟功能。

2.BPSK的调制、解调的VHDL设计

1.BPSK原理:

BPSK使用了基准的正弦波和相位反转的波浪,使一方为0,另一方为1,从而可以同时传送接受2值(1比特)的信息。

由于最单纯的键控移相方式虽抗噪音较强但传送效率差,所以常常使用利用4个相位的QPSK和利用8个相位的8PSK。

在大多数情况下,数字调制是利用数字信号的离散值去键控载波。

对载波的幅度、频率或相位进行键控,便可获得ASK、FSK、PSK等。

这三种数字调制方式在抗干扰噪声能力和信号频谱利用率等方面,以相干PSK的性能最好,目前已在中、高速传输数据时得到广泛应用。

2.BPSK调制解调原理:

调相信号是通过载波的相位变化来传输消息的,它具有恒定的包络,而且频率上也无法分离,所以不能采用包络解调,只能采用相干解调。

原理图如下:

3.BPSK调制:

程序代码如下:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entitylynis

port(mux_clock:

instd_logic;

m_sel:

instd_logic_vector(1downto0);

ref_clk:

outstd_logic;

data_out:

bpsk_out:

outstd_logic

);

endentity;

architecturebehaveoflynis

componentdff

port(d,clk:

q:

outstd_logic);

endcomponent;

signala:

std_logic_vector(0to3);

signaltemp0:

std_logic;

signalout0,out1,out2,out3:

signalref_clock:

begin

ref_clock<

=mux_clock;

ref_clk<

=ref_clock;

data0:

process(mux_clock)--产生时钟信号的八分频

variablecnt:

integerrange0to8;

ifmux_clock'

eventandmux_clock='

then

cnt:

=cnt+1;

ifcnt<

=4then

out0<

='

elsifcnt<

8then

out0<

0'

else

cnt:

=0;

endif;

endprocessdata0;

data1:

process(mux_clock)--时钟信号十六分频电路

integerrange0to16;

=8then

out1<

16then

endprocessdata1;

a(0)<

=temp0;

--反馈系数为23的七位伪码序列

u13_1:

dffportmap(a(0),mux_clock,a

(1));

u13_2:

dffportmap(a

(1),mux_clock,a

(2));

u13_3:

dffportmap(a

(2),mux_clock,a(3));

temp0<

=not(a

(2)xora(3));

out2<

=nota(3);

out3<

--获取全零序列

output:

process(mux_clock)--通过m_sel选择某一输出信号,并对其进行BPSK编码

casem_selis

when"

00"

data_out<

=out0;

bpsk_out<

=out0xorref_clock;

01"

=out1;

=out1xorref_clock;

10"

=out2;

=out2xorref_clock;

11"

=out3;

=out3xorref_clock;

whenothers=>

endcase;

endprocessoutput;

endbehave;

仿真后的波形如图所示:

4.BPSK解调

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_arith.ALL;

USEIEEE.STD_LOGIC_unsigned.ALL;

ENTITYliIS

PORT(clk:

INstd_logic;

start:

a:

b:

OUTstd_logic);

ENDli;

ARCHITECTUREbehaveOFliIS

SIGNALc:

integerRANGE0TO3;

BEGIN

PROCESS(clk)

BEGIN

IF(clk'

eventANDclk='

)THEN

IFstart='

THENc<

ELSIFc=0THENc<

=c+1;

IFa='

THENb<

ELSEb<

ENDIF;

ELSIFc=3THENc<

ELSEc<

ENDIF;

ENDPROCESS;

ENDbehave;

仿真后的波形为:

由上图可知:

当输入的已调波信号a相位为0时,输出的基带信号b为高电平。

当输入的相位为π时,输出的基带信号b为低电平。

说明解调成功。

三.八位七段数码管动态显示的VHDL设计

1.七段显示器显示原理

七段显示器可用来显示单一的十进制或十六进制的数字,它是由八个发光二极管所构成的(每一个二极管依位置不同而赋予不同的名称,请参见图4.1)。

我们可以简单的说,要产生数字,便是点亮特定数据的发光二极管。

例如要产生数字「0」,须只点亮A、B、C、D、E、F等节段的发光二极管;

要产生数字「5」,则须点亮A、C、D、F、G等节段发光二极管,以此类推,参见图4.6。

因此,以共阳极七段显示器而言,要产生数字「0」,必须控制CycloneIIFPGA芯片接连至A、B、C、D、E、F等接脚呈现“低电位”,使电路形成通路状态。

表4.1则为共阳极七段显示器显示之数字编码。

本实验要求完成的任务是在时钟信号的作用下,通过输入的键值在数码管上显示相应的键值。

2.程序代码解析

  useieee.std_logic_1164.all;

  useieee.std_logic_arith.all;

  useieee.std_logic_unsigned.all;

  entityexp4is--exp4为实体名

  port(clk:

instd_logic;

--定义动态扫描时钟信号

  key:

instd_logic_vector(3downto0);

--定义四位输入信号

  ledag:

outstd_logic_vector(6downto0);

--定义七位输出信号

  del:

outstd_logic_vector(2downto0)--定义八位数码管位置显示信号

  endexp4;

--结束实体

  

  architecturewhbkrcofexp4is--whbkrc为结构体名

  begin--以begin为标志开始结构体的描述

  process(clk)--进程,clk变化时启动进程

  variabledount:

std_logic_vector(2downto0);

--变量,计数

  begin

  ifclk'

eventandclk='

then--检测时钟上升沿

  dount:

=dount+1;

--计数器dount累加

  endif;

  del<

=dount;

--片选信号

  endprocess;

--结束进程

  process(key)--进程,key变化时启动进程

  casekeyis

  when"

0000"

ledag<

0111111"

--七段数码管显示0

0001"

0000110"

--1

0010"

1011011"

--2

0011"

1001111"

--3

0100"

1100110"

--4

0101"

1101101"

--5

0110"

1111101"

--6

0111"

0000111"

--7

1000"

1111111"

--8

1001"

1101111"

--9

1010"

1110111"

--R

1011"

1111100"

--b

1100"

0111001"

--C

1101"

1011110"

--d

1110"

1111001"

--E

1111"

1110001"

--F

  whenothers=>

null;

  endcase;

--结束进程

  endwhbkrc;

--结束结构体

说明:

程序有三部分构成,其为:

库和包library(设计资源);

实体entity(外部端口);

结构体architecture(内部结构)

在此程序中:

实体说明主要描述对象的外貌,即对象的输入和输出(I/O)的端口信息,它并不描述器件的具体功能。

结构体具体指明了该设计实体的行为,定义了该设计实体的功能,规定了该设计实体的数据流程,指派了实体中内部元件的连接关系。

编辑输入端口波形:

仿真后得到的波形:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1