1、FPGA编程基础之实验程序目 录分频器实验: 21、分频倍数为2N 22、分频倍数为偶数,但不是2N 2(1)10分频,每10个clk输出一个高脉冲。 2(2)10分频,占空比为50% 3(3)一般偶数分频程序 43、分频倍数为奇数 5串并-并串变换实验 61、数字信源模块: 62、串并变换模块: 63、串并-并串顶层电路图 84、仿真波形 8正选信号发生器实验: 9分频器实验:1、分频倍数为2N例如:32分频-=-计数器(031)-=LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.all;USE IEEE.STD_LOGIC_UNSIGNED.all;ENTITY
2、counter32 IS PORT(clk:IN STD_LOGIC; d:BUFFER STD_LOGIC_VECTOR(4 DOWNTO 0); -进行32计数,数据类型宽度为5END counter32;ARCHITECTURE behav OF counter32 ISBEGIN PROCESS(clk) BEGIN IF(clkevent AND clk=1)THEN d=d+1; END if; END PROCESS;END behav;2、分频倍数为偶数,但不是2N例如:10分频(1)10分频,每10个clk输出一个高脉冲。-=-10分频,每10个clk输出一个高脉冲。-=LI
3、BRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;-USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fenpin10 IS PORT(clk:IN STD_LOGIC; clkout:OUT STD_LOGIC);END fenpin10;ARCHITECTURE behav OF fenpin10 IS BEGIN PROCESS(clk) VARIABLE n:INTEGER range 0 to 9:=0; BEGIN IF clkEVENT AND clk=1 THEN IF n9 THEN -10分频 n:=n+1; clko
4、ut=0; ELSE n:=0; clkout=1; END IF; END IF; END PROCESS; END behav;(2)10分频,占空比为50%-=-10分频,占空比为50%。-=LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;-USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fenpin_10 IS PORT(clk:IN STD_LOGIC; clkout:BUFFER STD_LOGIC);END fenpin_10;ARCHITECTURE behav OF fenpin_10 IS BEGIN PROC
5、ESS(clk) VARIABLE n:INTEGER RANGE 0 to 4:=0; BEGIN IF clkEVENT AND clk=1 THEN IF n4 THEN -10分频 n:=n+1; ELSE n:=0; clkout=NOT clkout; END IF; END IF; END PROCESS; END behav;(3)一般偶数分频程序-=-i分频(i为偶数),占空比为50%。-定义常数m,m=i/2-1-=LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY fenpin_i IS PORT(clk:IN STD_LOGI
6、C; clkout:BUFFER STD_LOGIC);END fenpin_i;ARCHITECTURE behav OF fenpin_i ISCONSTANT m:integer:=4; -设置参数m=i/2-1,实现i分频 BEGIN PROCESS(clk) VARIABLE n:INTEGER RANGE 0 to m:=0; BEGIN IF clkEVENT AND clk=1 THEN IF nm THEN n:=n+1; ELSE n:=0; clkout=NOT clkout; -i分频 END IF; END IF; END PROCESS; END behav;3、分
7、频倍数为奇数例如,7分频mod=分频数/2+0.5=7/2+0.5=4串并-并串变换实验1、数字信源模块:library ieee;use ieee.std_logic_1164.all;entity m_15 is port(clk:in std_logic; m:out std_logic);end m_15;architecture behav of m_15 isconstant m_15:std_logic_vector(0 to 14):=000111101011001;begin process(clk) variable n:integer range 0 to 14:=0;
8、begin if clkevent and clk=1 then m=m_15(n); if n=14 then n:=0; else n:=n+1; end if; end if; end process;end behav;2、串并变换模块:-=-串并变换-1路串行码输入(m),4路并行码输出(dataout1_43.0)-en为串行输入使能端,高电平有效-oe为并行输出使能端,高电平指示输出起始时刻,持续一个时钟周期-s用于循环计数(0,1,2,3),并串变换时有用-=LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_p_1_4 ISPO
9、RT(clk,m,en: IN STD_LOGIC; dataout1_4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); oe:BUFFER STD_LOGIC; s:BUFFER INTEGER RANGE 0 TO 3); END s_p_1_4; ARCHITECTURE behav OF s_p_1_4 ISSIGNAL y:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN P1:PROCESS(clk,en) BEGIN IF(clkEVENT AND clk = 1) THEN IF(en=0) THEN -en为串行输入使能端,高电平有效
10、 s=0; ELSE y(s)=m; -先移入的为低位 s = s+1; IF (s=3) THEN oe=1; ELSE oe=0; END IF; END IF; END IF; END PROCESS P1; P2:PROCESS(oe) BEGIN IF(oe=1) THEN -oe为并行输出使能端 dataout1_4=y; END IF; END PROCESS P2; END behav;3、串并-并串顶层电路图4、仿真波形正选信号发生器实验:-=-正弦信号产生模块;-输入信号:时钟clk,使能端ena(低电平有效),输出8bit采样值编码:s:7.0;-8个采样点,量化后取值分
11、别为0,54,76,54,0,-54,-76,-54;-每个采样点进行8bit二进制编码;-最高位1表示正数,0表示负数,负数用补码表示(正数取反+1)。-=LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.all;ENTITY sin IS PORT(clk:IN STD_LOGIC; ena:IN STD_LOGIC; s:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END sin;ARCHITECTURE behav OF sin ISSIGNAL n:INTEGER RANGE 0 TO 7; BEGIN PROCESS(ena,clk) BEGIN IF ena=1 THEN nssssssss=01001010; END CASE; n=n+1; END IF; END IF; END PROCESS;END behav;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1