文档详情

实验四序列发生器.doc

发布:2017-03-23约1.06万字共15页下载文档
文本预览下载声明
南昌大学实验报告 学生姓名: 学 号: 专业班级:中兴101班 实验类型:□验证 □综合 ■设计 □创新 实验日期:2012、11、16 成绩: 实验四 序列信号发生器检测器设计 PC机、Quartus II软件、EDA实验箱 四、实验思路 设计序列发生器 基本思想为一个信号CQ1计数,给另一个信号CO(代表序列的每一位)赋值的方法: 先设定端口CQ1用于产生序列时计数,因为序列共16位,因此端口CQ1为标准逻辑矢量,位宽为4,设另一个端口M代表序列的每一位,CQ1每计一个数,就给M赋一个值,这样产生一个16位的序列。由于端口不能参与相关运算,因此在结构体中我分别定义了信号CQ1(标准逻辑矢量,位宽4),信号Q与相应的端口CQ1 CO对应,在进程中参与相应的运算,在程序的最后再用端口接收信号: CO=Q; 在进程中我采用case – when 语句,如当CQ1为“0000”的时候,给另一信号Q赋‘0’,当CQ1为“0001”时,为Q赋‘1’以此类推,且让CQ1产生循环,即可源源不断的产生所需序列了,如下表 CQ1 0000 0001 0010 0011 0100 0101 0110 0111 Q 0 1 1 1 0 1 0 0 CQ1 1000 1001 1010 1011 1100 1101 1110 1111 Q 1 1 0 1 1 0 1 0 序列检测器 序列检测器设计的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及序列,直到在连续的检测中收到的每一位码都与实验要求相同。在此,必须利用状态转移图。 电路需要分别不间断记忆:初始状态、1、11、110、1101、11010共六种状态,状态转移如图: 1 1 0 1 0 S0 S1 S2 S3 S4 S5 0 0 1 1 1 若检测到“11010”序列,则输出信号N为1,定义VARIABLE X:STD_LOGIC_VECTOR (3 DOWNTO 0)进行计数,最后把变量X赋给输出SS,在数码管上显示检测到序列“11010”的次数。 3.时钟脉冲的选择 数码管显示的扫描时钟需要很快的速度,因此采用1KHz频率的时钟;而序列发生器,为了能够人眼识别亮灭,则我选择采用2000分频之后得到的0.5Hz频率 五.原理图输入法设计(程序来源:基本上独立完成) 1. 建立文件夹 建立自己的文件夹(目录),如c:\myeda,进入Windows操作系统 Quartus II不能识别中文,文件及文件夹名不能用中文。 2. 原理图设计输入 打开Quartus II,选菜单File→New,选择“Device Design File-Block Diagram-Schematic File”项。点击“OK”,在主界面中将打开 “Block Editor”窗口。 图1 --时间:2012年11月10号 --版本:7.2 --功能:分频器(2000分频) 分频模块DIV源代码div.vhd如下: -------分频程序,从1KHZ中得到0.5HZ的计数频率,2000分频---------- LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; --这3个程序包足发应付大部分的VHDL程序设计 USE IEEE.STD_LOGIC_Arith.ALL; USE IEEE.STD_LOGIC_Unsigned.ALL; ENTITY DIV IS GENERIC(N:Integer:=20000);--此处定义了一个默认值N=10000,即电路为10000分频电路; Port(Clockin:IN STD_LOGIC; ClockOut:OUT STD_LOGIC); END; ARCHITECTURE Devider OF DIV IS SIGNAL Counter:Integer RANGE 0 TO N-1; SIGNAL Temp1:STD_LOGIC; --信号的声明
显示全部
相似文档