FPGA编程基础之实验程序.docx

上传人:b****4 文档编号:11585383 上传时间:2023-03-19 格式:DOCX 页数:9 大小:30.26KB
下载 相关 举报
FPGA编程基础之实验程序.docx_第1页
第1页 / 共9页
FPGA编程基础之实验程序.docx_第2页
第2页 / 共9页
FPGA编程基础之实验程序.docx_第3页
第3页 / 共9页
FPGA编程基础之实验程序.docx_第4页
第4页 / 共9页
FPGA编程基础之实验程序.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

FPGA编程基础之实验程序.docx

《FPGA编程基础之实验程序.docx》由会员分享,可在线阅读,更多相关《FPGA编程基础之实验程序.docx(9页珍藏版)》请在冰豆网上搜索。

FPGA编程基础之实验程序.docx

FPGA编程基础之实验程序

目录

分频器实验:

2

1、分频倍数为2N2

2、分频倍数为偶数,但不是2N2

(1)10分频,每10个clk输出一个高脉冲。

2

(2)10分频,占空比为50%3

(3)一般偶数分频程序4

3、分频倍数为奇数5

串并-并串变换实验6

1、数字信源模块:

6

2、串并变换模块:

6

3、串并-并串顶层电路图8

4、仿真波形8

正选信号发生器实验:

9

分频器实验:

1、分频倍数为2N

例如:

32分频

--============================

--计数器(0~31)

--============================

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.all;

USEIEEE.STD_LOGIC_UNSIGNED.all;

ENTITYcounter32IS

PORT(clk:

INSTD_LOGIC;

d:

BUFFERSTD_LOGIC_VECTOR(4DOWNTO0));--进行32计数,数据类型宽度为5

ENDcounter32;

ARCHITECTUREbehavOFcounter32IS

BEGIN

PROCESS(clk)

BEGIN

IF(clk'eventANDclk='1')THEN

d<=d+1;

ENDif;

ENDPROCESS;

ENDbehav;

2、分频倍数为偶数,但不是2N

例如:

10分频

(1)10分频,每10个clk输出一个高脉冲。

--================================

--10分频,每10个clk输出一个高脉冲。

--================================

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

--USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYfenpin10IS

PORT(clk:

INSTD_LOGIC;

clkout:

OUTSTD_LOGIC);

ENDfenpin10;

ARCHITECTUREbehavOFfenpin10IS

BEGIN

PROCESS(clk)

VARIABLEn:

INTEGERrange0to9:

=0;

BEGIN

IFclk'EVENTANDclk='1'THEN

IFn<9THEN--10分频

n:

=n+1;

clkout<='0';

ELSE

n:

=0;

clkout<='1';

ENDIF;

ENDIF;

ENDPROCESS;

ENDbehav;

(2)10分频,占空比为50%

--================================

--10分频,占空比为50%。

--================================

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

--USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYfenpin_10IS

PORT(clk:

INSTD_LOGIC;

clkout:

BUFFERSTD_LOGIC);

ENDfenpin_10;

ARCHITECTUREbehavOFfenpin_10IS

BEGIN

PROCESS(clk)

VARIABLEn:

INTEGERRANGE0to4:

=0;

BEGIN

IFclk'EVENTANDclk='1'THEN

IFn<4THEN--10分频

n:

=n+1;

ELSE

n:

=0;

clkout<=NOTclkout;

ENDIF;

ENDIF;

ENDPROCESS;

ENDbehav;

(3)一般偶数分频程序

--================================

--i分频(i为偶数),占空比为50%。

--定义常数m,m=i/2-1

--================================

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYfenpin_iIS

PORT(clk:

INSTD_LOGIC;

clkout:

BUFFERSTD_LOGIC);

ENDfenpin_i;

ARCHITECTUREbehavOFfenpin_iIS

CONSTANTm:

integer:

=4;--设置参数m=i/2-1,实现i分频

BEGIN

PROCESS(clk)

VARIABLEn:

INTEGERRANGE0tom:

=0;

BEGIN

IFclk'EVENTANDclk='1'THEN

IFn

n:

=n+1;

ELSE

n:

=0;

clkout<=NOTclkout;--i分频

ENDIF;

ENDIF;

ENDPROCESS;

ENDbehav;

3、分频倍数为奇数

例如,7分频

mod=分频数/2+0.5=7/2+0.5=4

串并-并串变换实验

1、数字信源模块:

libraryieee;

useieee.std_logic_1164.all;

entitym_15is

port(clk:

instd_logic;

m:

outstd_logic);

endm_15;

architecturebehavofm_15is

constantm_15:

std_logic_vector(0to14):

="000111101011001";

begin

process(clk)

variablen:

integerrange0to14:

=0;

begin

ifclk'eventandclk='1'then

m<=m_15(n);

ifn=14then

n:

=0;

elsen:

=n+1;

endif;

endif;

endprocess;

endbehav;

2、串并变换模块:

--===================================

--串并变换

--1路串行码输入(m),4路并行码输出(dataout1_4[3..0])

--en为串行输入使能端,高电平有效

--oe为并行输出使能端,高电平指示输出起始时刻,持续一个时钟周期

--s用于循环计数(0,1,2,3),并串变换时有用

--====================================

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYs_p_1_4IS

PORT(clk,m,en:

INSTD_LOGIC;

dataout1_4:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

oe:

BUFFERSTD_LOGIC;

s:

BUFFERINTEGERRANGE0TO3);

ENDs_p_1_4;

ARCHITECTUREbehavOFs_p_1_4IS

SIGNALy:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

P1:

PROCESS(clk,en)

BEGIN

IF(clk'EVENTANDclk='1')THEN

IF(en='0')THEN--en为串行输入使能端,高电平有效

s<=0;

ELSE

y(s)<=m;--先移入的为低位

s<=s+1;

IF(s=3)THEN

oe<='1';

ELSE

oe<='0';

ENDIF;

ENDIF;

ENDIF;

ENDPROCESSP1;

P2:

PROCESS(oe)

BEGIN

IF(oe='1')THEN--oe为并行输出使能端

dataout1_4<=y;

ENDIF;

ENDPROCESSP2;

ENDbehav;

3、串并-并串顶层电路图

4、仿真波形

正选信号发生器实验:

--=============================

--正弦信号产生模块;

--输入信号:

时钟clk,使能端ena(低电平有效),输出8bit采样值编码:

s:

[7..0];

--8个采样点,量化后取值分别为0,54,76,54,0,-54,-76,-54;

--每个采样点进行8bit二进制编码;

--最高位'1'表示正数,'0'表示负数,负数用补码表示(正数取反+1)。

--==============================

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.all;

ENTITYsinIS

PORT(clk:

INSTD_LOGIC;

ena:

INSTD_LOGIC;

s:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDsin;

ARCHITECTUREbehavOFsinIS

SIGNALn:

INTEGERRANGE0TO7;

BEGIN

PROCESS(ena,clk)

BEGIN

IFena='1'THEN

n<=0;

ELSE

IF(clk'EVENTANDclk='1')THEN

CASEnIS

WHEN0=>s<="10000000";

WHEN1=>s<="10110110";

WHEN2=>s<="11001100";

WHEN3=>s<="10110110";

WHEN4=>s<="10000000";

WHEN5=>s<="01001010";

WHEN6=>s<="00110100";

WHEN7=>s<="01001010";

ENDCASE;

n<=n+1;

ENDIF;

ENDIF;

ENDPROCESS;

ENDbehav;

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

当前位置:首页 > 人文社科

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

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