函数发生器的仿真设计 目的:利用VHDL 语言为编程工具,以ALTEAR 的FPGA 芯片为编程对象,以QUARTUS II 为EDA 开发软件平台,设计具有一定复杂度实用系统。主要目的是使学生初步了解软件设计相关知识及步骤、进一步理解TOP——DOWN 设计思想、更全面地掌握 VHDL 语言相关知识、了解实用程序的调试方法。 系统功能介绍及总体结构设计 (1)功能介绍: 函数发生器由波形选择开关控制波形的输出,分别能输出方波、阶梯波、锯齿波递减和锯齿波递增、三角波、正弦波六种波形,考虑程序的容量,每种波形在一个周期内均取32个取样点。本设计采用自顶向下的设计方法进行设计。clock为系统时钟,clr为系统清零信号,fpxs为分频器的分频系数,s是波形选择开关,系统获得的数字信号经D/A转换器即可转换成模拟信号输出波形。 (2)总体结构设计:如下图带分频功能的函数发生器系统图1 LIBRARY IEEE;--选择器 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY Xuanzeqi IS PORT ( sel: in std_logic_vector(2 downto 0); d1,d2,d3,d4,d5,d6:in std_logic_vector(7 downto 0); q:out std_logic_vector(7 downto 0)); END ENTITY Xuanzeqi; ARCHITECTURE behave OF Xuanzeqi IS BEGIN PROCESS(sel) BEGIN CASE sel IS WHEN "001"=>q<=d1;--方波 WHEN "010"=>q<=d2;--阶梯波 WHEN "011"=>q<=d3;--锯齿波递减 WHEN "100"=>q<=d4;--锯齿波递增 WHEN "101"=>q<=d5;--三角波 WHEN "110"=>q<=d6;--正弦波 WHEN OTHERS=>null; END CASE; END PROCESS; END ARCHITECTURE behave; LIBRARY IEEE;--方波 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY Fangbo IS PORT ( clk,reset:in std_logic; q: out std_logic_vector(7 DOWNTO 0)); END ENTITY Fangbo; ARCHITECTURE behave OF Fangbo IS SIGNAL temp : std_logic ; BEGIN PROCESS(clk,reset) VARIABLE tmp: std_logic_vector(7 downto 0); BEGIN IF reset='0' THEN temp<='0'; ELSIF rising_edge(clk) THEN IF tmp="11111111" THEN tmp:="00000000"; ELSE tmp:=tmp+1; END IF; IF tmp<="10000000" THEN temp<='1'; ELSE temp<='0'; END IF; END IF; END PROCESS; PROCESS(clk,temp) BEGIN IF rising_edge(clk) THEN...