多进制数字频率调制系统VHDL程序.doc_第1页
多进制数字频率调制系统VHDL程序.doc_第2页
多进制数字频率调制系统VHDL程序.doc_第3页
多进制数字频率调制系统VHDL程序.doc_第4页
多进制数字频率调制系统VHDL程序.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

为了抛砖引玉,我先送上几个源代码 多进制数字频率调制(MFSK)系统VHDL程序 -文件名:MFSK -功能:基于VHDL硬件描述语言,完成对基带信号的MFSK调制 -说明:这里MFSK的M为4 library ieee; use ieee.std_logic_arith.all; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity MFSK is port(clk :in std_logic; -系统时钟 start :in std_logic; -开始调制信号 x :in std_logic; -基带信号 y :out std_logic); -调制信号 end MFSK; architecture behav of MFSK is process(clk) process(clk,yy) -此进程完成对输入基带信号x的MFSK调制 begin if clkevent and clk=1 then if start=0 then y=0; - if语句完成2位并行码到4种载波的选通 elsif yy=00 then y=not f(3); elsif yy=01 then y=not f(2); elsif yy=10 then y=not f(1); else y=not f(0); end if; end if; end process; end behav; -对输入的基带信号x进行串/并转换,得到2位并行信号的yy begin if clkevent and clk=1 then if start=0 then q=0; elsif q=0 then q=1;xx(1)=x;yy=xx; elsif q=8 then q=9;xx(0)=x; else q=q+1; end if; end if; end process; FPGA驱动LCD显示中文字符“年”程序 -文件名:lcd_driver.vhd。 -功能:FGAD驱动LCD显示中文字符“年”。 -最后修改日期:2004.3.24。 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity lcd_driver is Port ( clk : in std_logic; -状态机时钟信号,同时也是液晶时钟信号,其周期应该满足液晶数据的建立时间 reset:in std_logic; lcdda : out std_logic; -寄存器选择信号 lcdrw : out std_logic; -液晶读写信号 lcden : out std_logic; -液晶时钟信号 data : out std_logic_vector(7 downto 0); -液晶数据信号 end lcd_driver; architecture Behavioral of lcd_driver is type state is (set_dlnf,set_cursor,set_dcb,set _cgram,write _cgram,set_ddram,write_data); signal current_state:state; type ram2 is array(0 to 7) of std_logic_vector(7 downto 0); constant cgram:ram2:=(00001000),(00001111),(00010010), (00001111),(00001010),(00011111),(00000010),(00000010);-年字符数据存储器 signal clkk : std_logic; begin lcden = clk ; -液晶时钟信号 lcdrw = 0 ; -写数据 control:process(clk,reset,current_state) -液晶驱动控制器 variable cnt1: std_logic_vector(2 downto 0); begin if reset=0then current_state 1); lcdda=0; elsif rising_edge(clk)then current_state = current_state ; lcdda data=00111100;-3cH current_state data=00000110;-06H current_state data=00001111;-0fH current_state data=01000000;-40H current_state -向CGRAM中写入“年” lcdda=1; cnt1:=cnt1+1; data=cgram(conv_integer(cnt1); if cnt1 = 111 then current_state -从第一行的起始地址开始显示 data=10000000;-80H current_state lcdda=1; data null; end case; end if; end process; end Behavioral; FPGA驱动LED静态显示 -文件名:decoder.vhd -功能:译码输出模块,LED为共阳接法 -最后修改日期:2004.3.24 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity decoder is Port (seg:in std_logic_vector(3 downto 0 ); -四位二进制码输入 q3:out std_logic_vector(6 downto 0) ); -输出LED七段码 end decoder; architecture Behavioral of decoder is begin process(seg) begin case seg is when 0000 = q3 q3 q3 q3 q3 q3 q3 q3 q3 q3 q3=1111111; end case; end process; end Behavioral; 例2:FPGA驱动LED动态显示(4位) -文件名:dynamic.vhd。 -功能:动态扫描模块,位选信号高电平有效。 -最后修改日期:2004.3.24。 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity dynamic is Port ( clk : in std_logic; reset: in std_logic; din1 : in std_logic_vector(6 downto 0); -译码后的数据信号1(4位2进制数据 通过例1中的decoder模块译码得到din1,din2,din3,din4) din2 : in std_logic_vector(6 downto 0); -译码后的数据信号2 din3 : in std_logic_vector(6 downto 0); -译码后的数据信号3 din4 : in std_logic_vector(6 downto 0); -译码后的数据信号4 shift: out std_logic_vector(3 downto 0); -位选信号 bus4 : out std_logic_vector(6 downto 0); -数据信号 end dynamic; architecture Behavioral of dynamic is signal scan_clk:std_logic_vector(1 downto 0); begin process(clk,scan_clk,reset) -分频进程 variable scan:std_logic_vector(17 downto 0); begin if reset=1 then scan:=000000000000000000; scan_clk=00; elsif clkevent and clk=1then scan:=scan+1; end if; scan_clk bus4=din1; shift bus4=din2; shift bus4=din3; shift bus4=din4; shift bus4=0000000;shiftnext_state=st1;ale=0;start=0;ennext_state=st2;ale=1;start=0;ennext_state=st3;ale=0;start=1;en ale=0;start=0;en=0; if eoc=1 then next_state=st3; -检测EOC的下降沿 else next_state ale=0;start=0;en=0; if eoc=0 then next_state=st4; -检测EOC的上升沿 else next_statenext_state=st6;ale=0;start=0;ennext_state=st0;ale=0;start=0;en=1;regl next_state=st0;ale=0;start=0;en=0; end case; end process; clock:process(clk) -对系统时钟进行分频,得到ADC0809转换工作时钟 begin if clkevent and clk=1 then qq=qq+1; -在clk1的上升沿,转换至下一状态 if QQ=01111111 THEN clk1=1; current_state =next_state; elsif qq=01111111 then clk1=0; end if; end if; end process; q=regl; abc_out=abc_in; end behav; TLC5510 VHDL控制程序 -文件名:TLC5510.vhd -功能:基于VHDL语言,实现对高速A/D器件TLC5510控制 -最后修改日期:2004.3.20 library ieee; use ieee.std_logic_1164.all; entity tlc5510 is port(clk :in std_logic; -系统时钟 oe :out std_logic; -TLC5510的输出使能/OE clk1:out std_logic; -TLC5510的转换时钟 din:in std_logic_vector(7 downto 0); -来自TLC5510的采样数据 dout:out std_logic_vector(7 downto 0); -FPGA数据输出 end tlc5510; architecture behav of tlc5510 is signal q:integer range 3 downto 0; begin process(clk) -此进程中,把CLK 进行4分频,得到TLC5510的转换时钟 begin if clkevent and clk=1 then if q=3 then q=0; else q=2 then clk1=1; -对系统CLK进行4分频 else clk1=0; end if; end process; oe=0; -输出使能赋低电平 dout=din; -采样数据输出 end behav; DAC0832 接口电路程序 -文件名:DAC0832.VHD -功能:产生频率为762.9Hz的锯齿波。 -最后修改日期:2004.3.18。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity DAC0832 is port(clk:in std_logic; -系统时钟 rst:in std_logic; -复位信号 ile:out std_logic; -数据锁存允许信号 cont:out std_logic; -控制信号(WR1、WR2、CS、Xfer) data_out:out std_logic_vector(7 downto 0); -波形数据输出 end DAC0832; architecture behav of DAC0832 is signal q:integer range 0 to 63; -计数器 signal data:std_logic_vector(7 downto 0); -波形数据 begin process(clk) begin if rst=1 then q=0; -复位,对计数器q清零

温馨提示

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

评论

0/150

提交评论