[Verilog]用Verilog实现串并转换/并串装换

用Verilog实现串并转换/并串装换

摘要

一、串并转换模块

       串转并就是将低3位信号和输入信号一起赋值。因为经过转换后,码元速率会将为原来四分之一,所以设置4分频时钟,将其输出。而并转串就是不断右移,取高位输出。

module serial2para(input clk, rst_n,input ser_data_in,output reg [3:0] para_data_out
);parameter N = 4;//四分频模块
reg [13:0]  cnt;
reg         clk_out;
reg [3:0]   data;always @(posedge clk or negedge rst_n) beginif(cnt == N/2 - 1) begincnt     <= 14'b0;clk_out <= ~clk_out;end elsecnt <= cnt + 1'b1;
endalways @(posedge clk or negedge rst_n) beginif(~rst_n) data <= 4'h0;else       data <= {data[2:0], d};
endalways @(posedge clk_out or negedge rst_n) beginif(~rst_n) para_data_out <= 4'h0;else       para_data_out <= data;
endendmodule

1.1 利用移位寄存器

        串行转并行数据输出:采用位拼接技术(移位寄存器),将串行的数据总数先表示出来,然后发送一位数据加一,后面的接收的这样标志:para_data_o <= {para_data_o[6:0], ser_data_i };

module serial_parallel #(parameter DATA_WIDTH     = 8
)(input                          clk,input                          rst_n,input                          left_shift,input                          ser_data_in,   //1位串行输入output                         valid,output reg [DATA_WIDTH-1:0]    para_data_o	//8位并行输出
);parameter CNT_WIDTH = $clog2(DATA_WIDTH);reg [CNT_WIDTH-1:0]              ser_bit_cnt;always @(posedge clk or negedge rst_n) beginif (~rst_n)para_data_o <= {DATA_WIDTH{1'b0}};else if (left_shift == 1'b1)para_data_o <= {para_data_o[DATA_WIDTH-2:0], ser_data_in};	//低位先赋值,左移else if(left_shift == 1'b0)para_data_o <= {ser_data_in, para_data_o[DATA_WIDTH-1:1]};	//高位先赋值,右移
endalways @(posedge clk or negedge rst_n) beginif(~rst_n) beginser_bit_cnt <= {CNT_WIDTH{1'b0}};valid       <= 1'h0;endelse if(ser_bit_cnt == DATA_WIDTH-1) beginser_bit_cnt <= {CNT_WIDTH{1'b0}};valid = 1'b1;endelse beginser_bit_cnt <= ser_bit_cnt + 1'b1;valid       <= 1'b0;end
endendmodule

1.2 利用计数器

        利用计数器cnt 时钟计数,开始数据先给高位,每过一个时钟周期,数据便给低一位。这样便可以达到串转并的效果。

module serial_parallel(parameter         DATA_WITH = 8
)(input                      clk,input                      rst_n,input                      ser_data_in,input                      valid,output reg [DATA_WITH-1:0] para_data_o
);parameter                      CNT_WIDTH = $clog2(DATA_WITH);//msb first   most significant bit 表示二进制数据的最高位
reg   [DATA_WITH-1:0]   cnt; 	//计数器0-7  always @(posedge clk or negedge rst_n)beginif(rst_n == 1'b0) beginpara_data_o <= {DATA_WITH{1'b0}};cnt <= {CNT_WIDTH{1'd0}};endelse beginpara_data_o[DATA_WITH-1 - cnt] <= ser_data_in;	//高位先赋值cnt <= cnt + 1'b1;end
end/*
//lsb first	(least significant bit) 表示二进制数据的最低位reg     [2:0]   cnt;always @(posedge clk or negedge rst_n)beginif(rst_n == 1'b0) beginpara_data_o <= {DATA_WITH{1'b0}};cnt <= {CNT_WIDTH{1'd0}};endelse beginpara_data_o[cnt] <= data_i;   //低位先赋值cnt <= cnt + 1'b1;end
end
*/endmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/215875.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 11.0 systemui锁屏页面时钟显示样式的定制功能实现

1.前言 在11.0的系统ROM定制化开发中,在进行systemui的相关开发中,当开机完成后在锁屏页面就会显示时间日期的功能,由于 开发产品的需求要求时间显示周几上午下午接下来就需要对锁屏显示时间日期的相关布局进行分析,然后实现相关功能 效果图如图: 2.systemui锁屏页面时钟显…

mysql原理--B+树索引

1.没有索引的查找 1.1.在一个页中的查找 (1). 以主键为搜索条件 可以在 页目录 中使用二分法快速定位到对应的槽&#xff0c;然后再遍历该槽对应分组中的记录即可快速找到指定的记录。 (2). 以其他列作为搜索条件 这种情况下只能从 最小记录 开始依次遍历单链表中的每条记录&am…

值得收藏的练习打字网站

本文对一些好用的练习打字的网站进行了汇总整理&#xff0c;方便大家使用 一&#xff1a;程序猿练习打字&#xff1a; 1.Typing Practice for Programmers http://Typing.io 是程序员的打字导师。它的练习课程基于开源代码&#xff0c;让你在不断的练习中提升自己的码字速度…

Python:核心知识点整理大全15-笔记

目录 ​编辑 7.3.2 删除包含特定值的所有列表元素 pets.py 7.3.3 使用用户输入来填充字典 mountain_poll.py 7.4 小结 第8章 函 数 8.1 定义函数 greeter.py 8.1.1 向函数传递信息 8.1.2 实参和形参 8.2.1 位置实参 2. 位置实参的顺序很重要 8.2.2 关键字实参 往…

Ansible通过kubernetes.core.k8s_info和kubernetes.core.k8s访问OCP

文章目录 环境OCPClient&#xff08;Ansible控制节点&#xff09; 步骤准备工作在client端配置ssh免密登录OCP端在client端安装Ansible kubernetes.core.k8s_info第1次尝试在OCP端安装python和pip3在OCP端安装kubernetes在OCP端安装PyYAML第2次尝试在OCP端配置config文件第3次尝…

计算机循环神经网络(RNN)

计算机循环神经网络&#xff08;RNN&#xff09; 一、引言 循环神经网络&#xff08;RNN&#xff09;是一种常见的深度学习模型&#xff0c;适用于处理序列数据&#xff0c;如文本、语音、时间序列等。RNN通过捕捉序列数据中的时间依赖关系和上下文信息&#xff0c;能够解决很…

react Hooks之useId

当我们在编写React组件时&#xff0c;有时需要为元素生成唯一的ID。这种情况经常出现在表单元素、标签和用于无障碍性的目的上。React提供了一个名为useId的自定义Hook&#xff0c;它可以帮助我们生成唯一的ID。 1、作用&#xff1a; 用于生成一个唯一的 ID。这个 ID 可以用于…

CLIP的升级版Alpha-CLIP:区域感知创新与精细控制

为了增强CLIP在图像理解和编辑方面的能力&#xff0c;上海交通大学、复旦大学、香港中文大学、上海人工智能实验室、澳门大学以及MThreads Inc.等知名机构共同合作推出了Alpha-CLIP。这一创新性的突破旨在克服CLIP的局限性&#xff0c;通过赋予其识别特定区域&#xff08;由点、…

Could not resolve all dependencies for configuration ‘:app:androidApis‘.

android studio出现Could not resolve all dependencies for configuration ‘:app:androidApis’. 试过很多种方法&#xff0c;但是都不好使&#xff0c;不管怎么样都是提示如下报错&#xff1a; Using insecure protocols with repositories, without explicit opt-in, is un…

丹麦市场开发攻略,带你走进童话王国

说起安徒生&#xff0c;大家多多少少都知道&#xff0c;因为小时候读的安徒生童话书真的太有名了&#xff0c;但是大家可能不知道安徒生是丹麦的。丹麦是高度发达的国家&#xff0c;奉行自由贸易政策&#xff0c;市场潜力是非常不错的&#xff0c;而且中国是丹麦非常重要的贸易…

Python部分基础知识入门学习,十分钟快速上手

文章目录 一、基础语法二、变量类型三、运算符四、条件语句关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 一、…

这家消金公司业务调整,暂停合作产品贷款服务

来源 | 镭射财经&#xff08;leishecaijing&#xff09; 曾为金美信重要的线上自营渠道之一&#xff0c;钱多美宣告谢幕。 「镭射财经」注意到&#xff0c;金美信消费金融近期发布一则关于钱多美的业务调整公告&#xff0c;提及2023年12月15日起&#xff0c;旗下“钱多美App”…

初识 WebGPU 以及遇到 WebGPU not supported 错误的解决方法

初识 WebGPU 以及遇到 WebGPU not supported 错误的解决方法 WebGPU学习资源初识WebGPU遇到并解决问题在线示例 因公司需求&#xff0c;开始接触 WebGPU&#xff0c;偶然遇到问题&#xff0c;网上搜索无效&#xff0c;后来通过逐步判断&#xff0c;终于定位到问题&#xff0c;这…

【WPF 按钮点击后异步上传多文件code示例】

前言: WPF中按钮点击事件如何执行时间太长会导致整个UI线程卡顿&#xff0c;现象就是页面刷新卡住&#xff0c;点击其他按钮无反馈。如下是进行异步执行命令&#xff0c;并远程上传文件的代码。 ![异步上传文件](https://img-blog.csdnimg.cn/direct/20c071929b004dcf9223dee2…

听我的,日志还是得好好打!

日志这东西&#xff0c;平时看不出来什么&#xff0c;真要出了问题&#xff0c;那就是救命的稻草。这期就给大家分享一些日志相关的东西。 弄懂日志 SpringBoot项目启动日志 什么是日志&#xff1f; 日志&#xff0c;维基百科中对其的定义是一个或多个由服务器自动创建和维护…

【数学建模】《实战数学建模:例题与讲解》第十一讲-因子分析、聚类与主成分(含Matlab代码)

【数学建模】《实战数学建模&#xff1a;例题与讲解》第十一讲-因子分析、聚类与主成分&#xff08;含Matlab代码&#xff09; 基本概念聚类分析Q型聚类分析R型聚类分析 主成分分析因子分析 习题10.11. 题目要求2.解题过程3.程序4.结果 习题10.21. 题目要求2.解题过程3.程序4.结…

Java网络编程——安全网络通信

在网络上&#xff0c;信息在由源主机到目标主机的传输过程中会经过其他计算机。在一般情况下&#xff0c;中间的计算机不会监听路过的信息。但在使用网上银行或者进行信用卡交易时&#xff0c;网络上的信息有可能被非法分子监听&#xff0c;从而导致个人隐私的泄露。由于Intern…

request、limit资源配额

cpu/mem 的limit和request都是针对container来讲的&#xff0c;不是针对pod。 0 < request < limit cpu cpu资源限制的单位m&#xff1a;CPU的计量单位叫毫核(m)。一个节点的CPU核心数量乘以1000&#xff0c;得到的就是节点总的CPU总数量。如&#xff0c;一个节点有两个…

Rust做一个图片服务器有多难?

今天我们将详细探讨如何使用Rust构建一个图片服务器。Rust以其性能、安全性和并发处理能力而闻名&#xff0c;非常适合用于构建网络服务。 一个图片服务器需要处理图片的上传、存储、访问和处理&#xff0c;同时还要考虑安全性和性能。让我们一步步了解如何用Rust来实现这一目…

使用kubeadm搭建高可用的K8s集群

—————————————————————————————————————————————— 博主介绍&#xff1a;Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 &#x1f345;文末获取源码…