数字分接器设计VHDL代码Quartus仿真

名称:数字分接器设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

数字分接器的设计任务

利用所学过的《通信原理》以及《电子设计自动化》(EDA技术)的基本

知识完成数字分接器的设计。、要求

接收数字解调器输岀的串行数据,根据同步模块产生的帧同步码和位同步码(巴已知的信号),将根据按字复接方式将输入码元分成4路信号,输岀为三路并行的信息码。输入数据结构如下

要求.jpg

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

设计报告.doc

数字分接器设计


一、设计任务

本设计任务是利用所学过《通信原理》以及《电子设计自动化》(EDA技术)的基本知识完成数字分接器的设计。

任务要求是接收数字解调器输出的串行数据,根据同步模块产生的帧同步码和位同步码(已知的信号),将根据按字复接方式将输入码元分成4路信号,输出为三路并行的信息码。输入数据结构如下:

任务需求分析如下:

系统输入的信息数据信号有2个,一个是位同步码,一个是位同步数据,一个位同步码对应一个串行的位同步数据。当有串行输入的位同步数据为“1110010”时表示是帧同步码,即为以帧的起始位置,后面跟了3个信息码。其中信息码1一共9位,信息码2一共8位,信息码3一共8位,本系统任务就是检测帧同步码,然后提取出后面的3个信息码最后并行输出3路信息码。

二、系统工作原理

系统首先需要检测帧同步码,检测方式采用移位寄存器设计,帧同步码为“1110010”共7位,因此使用一个7bit位宽的移位寄存器,来一次位同步数据将数据移入移位寄存器的最低位,当移位寄存器得值为“1110010”时表示检测到帧同步码。

检测到帧同步码后,需要依次提取出信息码1、2、3,对此可以采用计数器来实现。当检测到帧同步码后启动计数器,由于信息码1共9位,信息码2共8位,信息码3共8位,因此一共有9+8+8位=25位,所以计数器需要计数到25。

当计数器值为1~9时对应信息码1,当计数器值为10~17时对应信息码2,当计数

器值为18~25时对应信息码3。

三、系统建模

根据系统工作原理,设计系统的工作流程图如下所示:

本系统设计采用行为描述方式,设计语言为VHDL,使用设计软件为QuartusII,按照任务要求,定义系统的端口如下表所示:

信号名

输入输出

位宽(bit)

备注

clk

输入

1

系统时钟

reset_p

输入

1

系统复位,高电平复位

bit_sync

输入

1

位同步码

bit_data

输入

1

位同步数据

information_code1

输出

9

9位信息码1

information_code2

输出

8

8位信息码2

information_code3

输出

8

8位信息码3

程序端口描述如下:

检测帧同步码的移位寄存器建模如下:

计数器建模如下:


一、VHDL程序描述

程序编译成功如图:

程序综合实现后的FPGA资源占用情况如下图所示:

五、电路仿真波形及说明

对VHDL代码进行仿真,仿真图如下:

下图为检测到帧同步码1110010时的图,可以看到frame_sync信号等于1110010,然后count_en变为高电平开始计数,count_data为计数值。

下图为根据计数值提取对应信息码1,可以看到提取的信息码1为101101011

下图为根据计数值提取对应信息码2,可以看到提取的信息码2为10011000

下图为根据计数值提取对应信息码3,可以看到提取的信息码3为10101011



部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
ENTITY receiver IS
   PORT (
      clk                : IN STD_LOGIC;
      reset_p            : IN STD_LOGIC;
      bit_sync           : IN STD_LOGIC;--位同步码
      bit_data           : IN STD_LOGIC;--位同步数据
      
      information_code1  : OUT STD_LOGIC_VECTOR(8 DOWNTO 0);--9位信息码1
      information_code2  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--8位信息码2
      information_code3  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--8位信息码3
   );
END receiver;
ARCHITECTURE behave OF receiver IS
   SIGNAL frame_sync     : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0000000";
   
   SIGNAL count_en       : STD_LOGIC := '0';
   SIGNAL count_data     : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";
   
   SIGNAL bit_sync_buf   : STD_LOGIC := '0';
   SIGNAL count_data_buf : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";
   
   SIGNAL code_1         : STD_LOGIC_VECTOR(8 DOWNTO 0) := "000000000";
   SIGNAL code_2         : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";
   SIGNAL code_3         : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";
BEGIN
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         IF (reset_p = '1') THEN
            frame_sync <= "0000000";
         ELSIF (bit_sync = '1') THEN
            frame_sync <= (frame_sync(5 DOWNTO 0) & bit_data);--移位寄存器,检测帧同步码
         END IF;
      END IF;
   END PROCESS;
   
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         IF (reset_p = '1') THEN
            count_en <= '0';
         ELSIF (frame_sync = "1110010") THEN--检测到1110010帧同步码开始计数
            count_en = "00011001") THEN
            count_en <= '0';
         END IF;
      END IF;
   END PROCESS;

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 数字分接器设计VHDL代码Quartus仿真

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员