当前位置:文档之家› EDA程序设计

EDA程序设计

EDA课程设计学院:电子信息科学与技术班级:11级电信本(一)班姓名:王后影学号: 1 1 0 9 1 4 0 3 3辅导教师:肖开选基于LMP的流水线乘法累加器设计一、设计目的乘法累加器常在全硬件的数字信号处理的不同算法中用到。

本节通过一个8位流水线乘法累加器的实例介绍以顶层原理图为工程,VHDL文本描述和宏功能块为原理图元件的输入和设计方法。

二、设计原理本设计通过调用LPM加法器模块以及LPM乘法器模块构建一个乘法累加器,另外,本文还给出LPM库的乘法累加器模块ALTMULT_ADD,进过参数设置,能实现同上功能。

三、symbol图产生的symbol见附录。

四、设计结果及分析1、8位乘法累加器顶层设计图图(一)顶层设计图2、时序仿真波形图图(二)工程仿真波形图由上述波形可知:在clk的第四个上升沿后才得到第一个计算数据,之前都是0,这就是流水线结构的计算结果。

第四个上升沿得到结果为,而第五个上升沿后得到结果为,第六个上升沿后得到的结果为。

3、LPM库的乘法累加器模块图图(三)ALTMULT_ADD模块图五、附录1、ADD16B产生的symbol2、MULT8B产生的symbol3、FF8B产生的symbolVHDL有限状态机设计一、设计目的1、进一步熟悉和掌握Quartus软件的各模块功能的使用方法。

2、加深对VHDL语言的了解,熟悉VHDL语言的语法特点,深刻了解Quartus 软件仿真中出现的各种问题并能加以解决。

3、学习使用和查看状态转换图。

二、设计原理本设计说明部分中使用type语句定义新的数据类型。

状态变量(如现态和次态)应定义为信号,便于信息传递,并将状态变量的数据类型定义为含有既定状态元素的新定义的数据类型。

其中新定义的数据类型名是FSM_ST,其元素类型分别为s0,s1,s2,s3,s4,使其恰好表述状态机的五个状态。

在此设计模块说明部分,定义了五个文字参数符号,代表五个状态。

对于此程序,如果异步清零信号reset有过一个复位脉冲,当前状态即可被异步设置为S0;与此同时,启动组合进程,“执行”条件分支语句。

三、设计程序设计程序见附录。

四、设计结果及分析1、生成symbol图图(一)symbol图2、时序波形图通过分析波形,进一步了解状态机的工作特性。

需要注意,reset信号是低电平有效的,而clk是上升沿有效的,所以reset有效脉冲后的第一个时钟脉冲是第二个clk脉冲,第三个脉冲的上升沿后,现态c_st即进入状态S1.同时输出8,即“1000”。

图(二)仿真时序波形图3、状态图图(三)波形图五、附录设计程序:library ieee;use ieee.std_logic_1164.all;entity fsm_exp isport(clk,reset :in std_logic;state_inputs:in std_logic_vector(0 to 1);comb_outputs:out integer range 0 to 15 );end fsm_exp;architecture behav of fsm_exp istype fsm_st is (s0,s1,s2,s3,s4);signal c_st,next_state:fsm_st;beginreg:process (reset,clk)beginif reset='0' then c_st<=s0;elsif clk='1' and clk'event then c_st <= next_state;end if;end process reg;com:process (c_st,state_inputs)begincase c_st iswhen s0 => comb_outputs <= 5;if state_inputs="00" then next_state <= s0;else next_state <= s1;end if;when s1 => comb_outputs <= 8;if state_inputs="01" then next_state <= s1;else next_state <= s2;end if;when s2 => comb_outputs <= 12;if state_inputs="10" then next_state <= s0;else next_state <= s3;end if;when s3 => comb_outputs <= 14;if state_inputs="11" then next_state <= s3;else next_state <= s4;end if;when s4 => comb_outputs <= 9; next_state <= s0;when others => next_state <= s0;end case;end process com;end behav;多进程结构的Moore型机一、设计目的1、进一步熟悉和掌握Quartus软件的各模块功能的使用方法。

2、加深对VHDL语言的了解,熟悉VHDL语言的语法特点,深刻了解Quartus 软件仿真中出现的各种问题并能加以解决。

3、学习使用和查看状态转换图。

二、设计原理本设计中的组合过程可以分为两个组合进程:一个负责状态译码和状态转换,另一个负责对外控制信号输出,从而构成一个三进程结构的有限状态机,其功能与前者一样,但程序结构更加清晰,功能分工更加明确。

Moore型状态机的输出仅为当前状态的函数,这类状态机在你输入发生变化时还必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化,所以比Mealy机要多等待一个时钟周期。

三、设计程序设计程序见附录。

四、设计结果及分析1、生成symbol图图(一)symbol图2、时序波形图图(二)仿真时序波形图上图显示了一个完整的采样周期。

复位信号后即进入状态s0,第二个时钟上升沿后,状态机进入状态s1(即cs=s1),由start、ale发出启动采样和地址选通的控制信号。

之后,eoc由高电平变为低电平,0809的8位数据输出端呈现高阻态“ZZ”。

在状态s2,等待clk数个时钟周期之后,eoc变为高电平,表示转述结束。

3、状态机图(三)波形图五、附录设计程序:library ieee;use ieee.std_logic_1164.all;entity adc0809 isport( d:in std_logic_vector(7 downto 0);clk,rst:in std_logic;eoc:in std_logic;ale:out std_logic;start,oe:out std_logic;adda,lock_t:out std_logic;q:out std_logic_vector(7 downto 0));end adc0809;architecture behav of adc0809 istype states is (s0,s1,s2,s3,s4);signal cs,next_state:states := s0;signal regl:std_logic_vector(7 downto 0);signal lock:std_logic;beginadda <= '0';lock_t <= lock;com:process(cs,eoc)begincase cs iswhen s0 => ale <= '0';start <= '0';oe <= '0';lock <= '0';next_state <= s1;when s1 => ale <= '1';start <= '1';oe <= '0';lock <= '0';next_state <= s2;when s2 => ale <= '0';start <= '0';oe <= '0';lock <= '0';if(eoc='1') then next_state <= s3;else next_state <= s2;end if;when s3 => ale <= '0';start <= '0';oe <= '1';lock <= '0';next_state <= s4;when s4 => ale <= '0';start <= '0';oe <= '1';lock <= '1';next_state <= s0;when others => ale <= '0';start <= '0';oe <= '0';lock <= '0';next_state <= s0;end case;end process com;reg:process(clk,rst)beginif rst='1' then cs <= s0;elsif clk'event and clk='1' then cs <= next_state;end if;end process reg;latch1:process (lock)beginif lock='1' and lock'event then regl <= d;end if;end process latch1;q <= regl;end behav;序列检测器之状态机设计一、设计目的1、进一步熟悉和掌握Quartus软件的各模块功能的使用方法。

2、加深对VHDL语言的了解,熟悉VHDL语言的语法特点,深刻了解Quartus 软件仿真中出现的各种问题并能加以解决。

相关主题