用VHDL语言设计一个周期性的11位巴克码11100010010序列发生器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级:09通信(2)班姓名:闫建康学号:090110045 题目:用VHDL语言设计一个周期性的11位巴克码11100010010序列发生器,并用时序仿真验证其功能。
1.设计思路
移位寄存器具有并行数据串行输出的功能,所以可以利用移位寄存器将此11位巴克码右移输出,因为巴克码是非周期性的,所以要利用时钟将其周期性的输出。当时钟有效并且并行数据预置使能型号有效时将巴克码预置到并行数据预置端口,然后使并行数据预置使能型号无效,在时钟有效时依次右移输出巴克码11100010010。然后再当时钟有效并且并行数据预置使能型号有效时将巴克码预置到并行数据预置端口,在时钟有效时依次右移输出巴克码。这样就实现了巴克码的周期性输出。
2. VHDL程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY BAKEMA IS
PORT ( CLK,LOAD: IN STD_LOGIC;
DIN: IN STD_LOGIC_VECTOR(10 DOWNTO 0);
QB: OUT STD_LOGIC );
END BAKEMA;
ARCHITECTURE behav OF BAKEMA IS
BEGIN
PROCESS (CLK,LOAD)
V ARIABLE REG11 : STD_LOGIC_VECTOR(10 DOWNTO 0);
BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF LOAD='1' THEN REG11:=DIN;
ELSE REG11 (9 DOWNTO 0) := REG11(10 DOWNTO 1);
END IF;
END IF;
QB<=REG11(0);
END PROCESS;
END behav;
3.仿真波形
4. 程序分析
该程序描述的是一个带有同步并行预置功能的11位右移移位寄存器。CLK是移位时钟信号,DIN是8位并行预置数据端口,LOAD 是并行数据预置使能信号,QB是串行输出端口。此移位寄存器的工作原理如下:
当CLK的上升沿到来时进程被启动,如果这时预置使能LOAD 为高电平,则将输入端口的11位二进制数并行置入移位寄存器中,作为串行右移输出的初始值;如果预置使能LOAD为低电平,则执行语句“REG11 (9 DOWNTO 0) := REG11(10 DOWNTO 1)”,此语句表明:①一个时钟周期后将上一时钟周期移位寄存器中的高10位二进制数REG11赋给此寄存器的低10位REG11;②将上一时钟周期移位寄存器中的最低位,即当前值REG(0)向QB输出。随着CLK 脉冲的到来,就完成了将并行预置输入的数据逐位向右串行输出的功能,即寄存器中的最低位首先输出。