代码实现在conv_en的控制下,将16位并行数据,转换为串行数据输出,并行数据转换为串行数据后,第一个周期是空的,第二个周期才会有数据输出,因为复位过后的din_reg初始值为0。

module ADF4351_CTRL(
input clk,
input rst,
input conv_en,
input [15:0] din,output reg dout,
output reg [15:0]din_reg,
output reg [4:0]cnt,
);parameter Num=16;//reg [15:0]din_reg;
//reg [4:0]cnt;//先输出高位,左移,若想输出低位则右移,且dout <= din_reg[0];
always @(posedge clk or negedge rst)beginif(!rst) begindout    <= 0;din_reg <=3'd0;cnt     <= 0;endelse if(conv_en == 1)beginif(cnt == Num - 1)begindout    <= din_reg[Num - 1];din_reg <= din;cnt     <= 1'd0;endelse begindin_reg <= din_reg <<1; dout    <= din_reg[Num - 1];cnt     <= cnt + 1'b1;endend
end

tb

`timescale 1ns/100psmodule tb_adf4351;parameter SYSCLK_PERIOD = 100;// 10MHZreg SYSCLK;
reg NSYSRESET;
reg SYN_EN;initial
beginSYSCLK = 1'b1;NSYSRESET = 1'b0;SYN_EN = 1'b0;
end//
// Reset Pulse
//
initial
begin#(SYSCLK_PERIOD * 10 )NSYSRESET = 1'b1;
end//
// Clock Driver
//
always @(SYSCLK)#(SYSCLK_PERIOD / 2.0) SYSCLK <= !SYSCLK;reg [15:0] DIN;integer j;initial
begin
#(SYSCLK_PERIOD*150) SYN_EN = 1'b1;
#(SYSCLK_PERIOD*450) SYN_EN = 1'b0;
endinitial
begin#1 DIN = 0;for(j = 0;j<20;j = j+1)begin#(SYSCLK_PERIOD*100) DIN = 16'hccee;#(SYSCLK_PERIOD*100) DIN = 16'haaaa;#(SYSCLK_PERIOD*100) DIN = 16'hccee;#(SYSCLK_PERIOD*100) DIN = 16'haaaa;#(SYSCLK_PERIOD*100) DIN = 16'hccee;end
endwire dout;
wire [15:0]din_reg;
wire [4:0]cnt;ADF4351_CTRL ADF4351_CTRL_0 (// Inputs.clk(SYSCLK),.rst(NSYSRESET),.din(DIN),// Outputs.dout(dout ),.din_reg(din_reg),.cnt(cnt),.SYN_CLK_F( SYN_CLK_F));endmodule

verilog并行数据转换为串行输出相关推荐

  1. 8位串行输入串行输出移位寄存器的Verilog设计

    1 Verilog描述 module shift_s2s(     input         din,     input         clk,     output reg     dout ...

  2. OpenCV cv :: Mat的串行输出功能的实例(附完整代码)

    OpenCV cv :: Mat的串行输出功能的实例 OpenCV cv :: Mat的串行输出功能的实例 OpenCV cv :: Mat的串行输出功能的实例 #include "open ...

  3. 8位并行输入串行输出的移位寄存器的Verilog描述

    1 Verilog描述 module shift_p2s(     input         clk,     input [7:0]    din,     input         load, ...

  4. CRC-16/XMODEM串行计算的Verilog源码及仿真

    文章目录 前言 一.CRC是什么? 二.硬件串行计算原理分析 1. 串行计算原理分析 (1) 原理图 (2) 计算过程 (3) 以CRC-16/XMODEM为例 2. Verilog代码 3. 仿真结 ...

  5. 高速串行总线的设计基础(一)同步时序模型介绍

    文章目录 前言 芯片间通信的时序模型 系统同步 源同步 自同步 并串转换 串并转换 时钟/数据恢复 参考文章 前言 高速信号设计涉及到方方面面的知识积累,也许TOC你认为即使没有掌握甚至没有听过一些高 ...

  6. FPGA之VGA转HDMI之并行串行转换模块编写

            上节我们使用编码模块可解决图像数据的编码问题,而这次使用的并行转串行模块的主要功能就是实现并行串行转换.单端信号转差分信号.单沿采样转双沿采样.         并行转串行模块框图如下 ...

  7. HyperLynx(二十九)高速串行总线仿真(一)

    高速串行总线仿真(一) 1.高速串行接口 2.SERDES(串行/解串器)架构 3.高速串行链路仿真拓扑结构 4.高速串行信号仿真流程 5.IBIS-AMI模型 6.高速串行信号仿真方法 随着电子产品 ...

  8. 串行并行 同步异步通信

    终端与其他设备(例如其他终端.计算机和外部设备)通过数据传输进行通信.数据传输可以通过两种方式进行:并行通信和串行通信. 1.串行通信 是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个 ...

  9. 8位并行左移串行转换电路_双向移位寄存器 8位双向移位寄存器电路设计

    目录 摘要 .............................................................................................. ...

最新文章

  1. SQL Server 2005 For XML[学习]
  2. uva 10396——Vampire Numbers
  3. 多主机Docker容器的VLAN划分
  4. 脆弱的是生命 不脆弱的是精神 雅安 挺住!
  5. 一个真实的案例———HPUX调整LUN大小识别更改
  6. 极客大学产品经理训练营 产品思维和产品意识(上) 第3课总结
  7. 【语言环境】win2008R2SP1+WAMP环境部署
  8. Java集合类和数组之间的相互转换
  9. 以javaweb项目为例,用户在搜索网页域名的过程到网页响应到底经过了什么?
  10. Python netCDF4
  11. 什么是网络智能运维?如何保障业务7x24小时在线?
  12. 微信中扫一扫自动调用手机外部浏览器打开链接下载APP(APK)
  13. Python 裁剪九宫格图片 —— 筑梦之路
  14. 国际计算机网络与信息安全博览会,2018中国(成都)国际计算机网络及信息安全展览会暨论坛...
  15. 增强网络口碑营销效果的5个方法
  16. WM_CREATE MFC OnCreate
  17. Linux的发音问题
  18. .NET 爱python——pythonnet模块使用
  19. 番茄花园移花接木和微软的36计
  20. 怎么用vc采集ni卡数据_利用labview、matlab和c实现非ni接口卡的数据采集及处理

热门文章

  1. 术语FXO和FXS的含义是什么
  2. 三方流通平台:佛系炒币远离币圈焦虑症候
  3. 服务器装什么操作系统好?
  4. mysql 数字金钱转中文金钱函数
  5. 创业需要宽广的心胸吗--leo看赢在中国第三季(6)
  6. spring spel 获取环境变量
  7. mac系统,思科Cisco Anyconnect卸载之后,无法重新安装问题
  8. HTML特殊转义字符
  9. 面向对象编写一个计算器
  10. sigmoid的通俗理解