并行到串行和串行到并行转换器VHDL代码Quartus仿真 您所在的位置:网站首页 利用vhdl语言实现16位串并转换器 并行到串行和串行到并行转换器VHDL代码Quartus仿真

并行到串行和串行到并行转换器VHDL代码Quartus仿真

2024-06-15 06:32| 来源: 网络整理| 查看: 265

名称:并行到串行和串行到并行转换器VHDL代码Quartus仿真(文末获取)

软件:Quartus

语言:VHDL

代码功能:

设计项目

该项目将涉及 VHDL 中并行到串行和串行到并行转换器的开发和仿真。数字系统通常会获取并行字节的数据,并通过单根导线传输它们,以节省导线面积,减少串扰影响,提高时钟速度或保持设备之间的兼容性。该练习将介绍组件实例化以及在单个项目中使用多个 VHDL 模块文件。在 VHDL 中设计复杂的系统时,优良作法是将系统的功能块分布在多个 VHDL 模块上,从而增加了代码的易用性和功能。整个系统的示意图如图 1 所示。该图的不同 VHDL 模块,实体,组件,端口和信号起初可能会造混淆,因此在开始练习之前了解层次结构非常重要。在本实验中,我们将使用计数器,串行化转换器和反序列化转换器。计数器用于控制速率以及将数据放置到串行线或从串行线中删除数据的时间,并将成为串行化实体的组成部分。为了实现此目标,您应该完成以下任务序列。

1.创建一个新的 Quartus Prime 项目并调用项目 Lab_1。首先,我们将创建一个 4 位计数器,该计

数器将用作序列化和反序列化模块的计时器。将新的 VHDL 文件添加到项目。将此模块计数器命

名。如有必要,请参考上一个实验室的指导。创建一个测试平台以检查代码的功能。

2.确定您的计数器工作正常后,以与创建计数器相同的方式创建一个名为 parallelToSerial 的新

VHDL 模块。在此模块中,我们将这个实体设计为采用 8 位并行输入信号并将其转换为串行输出

格式,以便每个位将在 8 个时钟周期内通过 1 位宽的输出线传输。为了定时传输,我们将使用

之前创建的计数器模块。parallelToSerial 模块应具有一个 8 位输入端口,一个 clk 输入和一

个 std_logic 串行输出。

3. 为了整理并行到串行转换所需的时序,可以在此模块中实例化第 1 部分中创建的计数器。在这

段代码中,我们通过定义不同的二进制模式并使用 case 语句在状态之间进行切换来有效地创建

状态机。鉴于计数器模块具有 16 种可能的状态,并且在其计数端口上按顺序递增计数,因此我

们可以在每个二进制计数的不同情况之间切换。例如:

状态 1,“ 0001”:我们取第一个并行位 input_port(0),并将其放在串行输出端口

output_port 上。

状态 2,“ 0010”:我们将第二位 input_port(1)放在输出上,依此类推。

4. 一旦创建了转换代码,请生成一个测试平台,以在并行输入端口上加载字节“ 01010101”作

为激励,并且没有初始延迟,以确保代码正常工作并在 8 个周期内观察串行输出。

5. 最后一步是通过添加一个称为 serialToParallel 的新 VHDL 模块来创建反序列化模块。这

将与 parallelToSerial 模块几乎相同,除了将串行输入线上的当前位值分配给每个模块中

不同的并行输出位之外。

提供了顺序案例说明 通过计数器信号。 阻止 输出 来自的港

如果表示不完整的数据,则应定义一个单独的信号,以便在分配了 8 位之后将并行输出信号加载

到物理输出端口。一旦生成了 VHDL 模块,则复制 parallelToSerial 的行为描述可能是一个好的

开始。在仿真中验证您的设计。创建一个测试平台,并按如下所示加载串行输入线:

处理

开始

等到 clk_input ='1';

等待 clk_period;

DATAX 输入 serial_sig       ); END behaver; 源代码

 扫描文章末尾的公众号二维码



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有