数据流中,用面积换速度-串行转并行的操作

并行转串行数据输出:采用计数方法,将并行的数据的总数先表示出来,然后发送一位数据减一,后面的接收的这样表示: data_out <= data[cnt];//cnt表示计数器

`timescale  1ns/1ns

module  p2s
(
input clk,
input rst_n,
input load,
input [:] pdata,
output sclk,
output sdat
);
`define FULL 'hf
reg [:] bitcnt;
reg en;
reg [:] sbuff;
always @(posedge clk or negedge rst_n)
if(!rst_n) en <= ;
else if(load) en <= 'b1;
else if(bitcnt==`FULL) en <= 'b0;
always @(posedge clk or negedge rst_n)
if(!rst_n) bitcnt <= ;
else if(en) bitcnt <= bitcnt + 'b1;
else bitcnt <= ;
assign sclk = bitcnt[];
always @(posedge clk or negedge rst_n)
if(!rst_n) sbuff <= 'b0;
else if(load) sbuff <= pdata;
else if(sclk) sbuff <= sbuff<<;
assign sdat = sbuff[];
endmodule

串行转并行数据输出:采用位拼接结束,将串行的数据总数先表示出来,然后发送一位数据加一,后面的接收的这样标志:data <= {data[6:0],data_out };------用过的74HC595

module SerialToParallel(
input CLK, //时钟
input RSTn, //复位
input Enable, //输入有效
input DataIn, //串行输入
output reg Ready, //输出有效
output[:] Index, //并行数据索引
output[:] ParallelData //并行数据输出
); reg[:] Data_Temp; //数据缓存
reg[:] counter; //位数计数器
reg[:] state; //状态机
reg[:] Index_Temp; //索引缓存 assign Index=Index_Temp;
assign ParallelData=Ready?Data_Temp:'d0; ////////////////////////////////////////
//state:
//4'd0:复位
//
//4'd1:未复位,未使能
//
//4'd2:未复位,输入使能
// always@(posedge CLK or negedge RSTn)
if(!RSTn)
begin
state<='d0; //复位
Ready<=;
counter<='d0;
Data_Temp<='d0;
Index_Temp<='d0;
end
else
begin
case(state)
'd0:
begin
if(!Enable)state<='d1;
else state<='d2;
Ready<=;
end
'd1:
begin
if(!Enable)state<='d1;
else state<='d2;
Ready<=;
counter<='d0;
Data_Temp<='d0;
end
'd2:
begin
if(!Enable)state<='d1;
else state<='d2;
case(counter)
'd0:begin Data_Temp[0]<=DataIn;counter<=counter + 1'b1;Ready<=;end
'd1:begin Data_Temp[1]<=DataIn;counter<=counter + 1'b1;Ready<=;end
'd2:begin Data_Temp[2]<=DataIn;counter<=counter + 1'b1;Ready<=;end
'd3:begin Data_Temp[3]<=DataIn;counter<=counter + 1'b1;Ready<=;end
'd4:begin Data_Temp[4]<=DataIn;counter<=counter + 1'b1;Ready<=;end
'd5:begin Data_Temp[5]<=DataIn;counter<=counter + 1'b1;Ready<=;end
'd6:begin Data_Temp[6]<=DataIn;counter<=counter + 1'b1;Ready<=;end
'd7:begin Data_Temp[7]<=DataIn;counter<=4'd0;Index_Temp<=Index_Temp + 'b1;Ready<=1'b1;end
endcase
end
endcase
end endmodule

FPGA设计思想之串并转换的更多相关文章

  1. FPGA设计思想与技巧(转载)

    题记:这个笔记不是特权同学自己整理的,特权同学只是对这个笔记做了一下完善,也忘了是从那DOWNLOAD来的,首先对整理者表示感谢.这些知识点确实都很实用,这些设计思想或者也可以说是经验吧,是很值得每一 ...

  2. 09A-独立按键消抖实验01——小梅哥FPGA设计思想与验证方法视频教程配套文档

    芯航线--普利斯队长精心奉献   实验目的: 1.复习状态机的设计思想并以此为基础实现按键消抖 2.单bit异步信号同步化以及边沿检测 3.在激励文件中学会使用随机数发生函数$random 4.仿真模 ...

  3. 08-FPGA状态机设计实例——小梅哥FPGA设计思想与验证方法视频教程配套文档

    芯航线--普利斯队长精心奉献   实验目的:1.学习状态机的相关概念 2.理解一段式.两段式以及三段式状态机的区别以及优缺点 实验平台:芯航线FPGA核心板 实验原理: 状态机全称是有限状态机(fin ...

  4. 02-FPGA设计流程介绍——小梅哥FPGA设计思想与验证方法视频教程配套文档

    芯航线——普利斯队长精心奉献 课程目标: 1.了解并学会FPGA开发设计的整体流程 2.设计一个二选一选择器并进行功能仿真.时序仿真以及板级验证 实验平台:芯航线FPGA开发板.杜邦线 实验内容: 良 ...

  5. 10-8位7段数码管驱动实验——小梅哥FPGA设计思想与验证方法视频教程配套文档

    芯航线--普利斯队长精心奉献   实验目的: 1.实现FPGA驱动数码管动态显示: 2.使用In system sources and probes editor工具,输入需要显示在数码管上的的数据, ...

  6. 09B-独立按键消抖实验02——小梅哥FPGA设计思想与验证方法视频教程配套文档

    芯航线--普利斯队长精心奉献   实验目的: 1.复习按键的设计 2.用模块化设计的方式实现每次按下按键0,4个LED显示状态以二进制加法格式加1,每次按下按键1,4个LED显示状态以二进制加法格式减 ...

  7. 05-IP核应用之计数器——小梅哥FPGA设计思想与验证方法视频教程配套文档

    芯航线--普利斯顿队长精心奉献   实验目的:了解FPGA的IP核相关知识并以计数器IP核为例学会基本IP使用的流程 实验平台:无 实验原理:     IP核(Intellectual Propert ...

  8. 04-时序逻辑电路设计之计数器——小梅哥FPGA设计思想与验证方法视频教程配套文档

    芯航线--普利斯队长精心奉献 实验目的:以计数器为例学会简单的时序逻辑电路设计 实验平台:芯航线FPGA核心板 实验原理: 时序逻辑电路是指电路任何时刻的稳态输出不仅取决于当前的输入,还与前一时刻输入 ...

  9. 03-组合逻辑电路设计之译码器——小梅哥FPGA设计思想与验证方法视频教程配套文档

    芯航线——普利斯队长精心奉献 课程目标:    1. 再次熟悉Quartus II工程的建立以及完整的FPGA开发流程 2. 以译码器为例学会简单组合逻辑电路设计 实验平台:无 实验原理: 组合逻辑, ...

随机推荐

  1. 【转帖】使用了 Service Mesh 后我还需要 API 网关吗?

    使用了 Service Mesh 后我还需要 API 网关吗? https://www.kubernetes.org.cn/6762.html api gateway和istio 是不一样的 追求不一 ...

  2. PHP核心配置详解

    基本配置-语法 1:大小写敏感 directive = value 2:运算符 | & ~ ! 3:空值的表达方式 foo = ; foo = none; foo = "none&q ...

  3. JavaScript—暂告,小节

    Javastript 的学习告一段落了.虽然还有更多的:爬虫 什么的    但是和我在学校的相比 要扎实许多.知道了兼容性 面向对象,闭包.....一些细节的用法. 虽然以后可能很少用到.可是我觉得 ...

  4. 并发与高并发(八)-线程安全性-原子性-synchronized

    前言 闲暇时刻,谈一下曾经在多线程教程中接触的同步锁synchronized,相当于复习一遍吧. 主要介绍 synchronized:依赖JVM Lock:依赖特殊的CPU指令,代码实现,Reetra ...

  5. UOJ #2 【NOI2014】起床困难综合症

    这道题我们设两个bitset(N和Y) \(N_i = cal(i,0) , Y_i=cal(i,1)\) cal(i) 即第i位经过题目中的计算后所得出来的值 然后贪心.倒序循环i,考虑第i位如何决 ...

  6. Spring Bean的生命周期、Spring MVC的工作流程、IOC,AOP

    1.Spring Bean的生命周期? (1)构造方法实例化bean. (2)构造方法设置对象属性. (3)是否实现aware接口,三种接口(BeanNameAware,BeanFactoryAwar ...

  7. Android开发环境搭建以及模拟环境搭建

    Android开发环境 现在主流的Android开发环境有: Eclipse + ADT + SDK Android Studio + SDK IntelliJ IDEA + SDK 现在国内大部分开 ...

  8. nfs 支持ipv6

    mount 一个ipv6 nfs 项目在docker里mount 一个nfs来读写,而现在需要支持ipv6,所以先写了各小demo,最后成功mount,这里记录一下 #include <sys/ ...

  9. LeetCode——853.车队

    N 辆车沿着一条车道驶向位于 target 英里之外的共同目的地. 每辆车 i 以恒定的速度 speed[i] (英里/小时),从初始位置 position[i] (英里) 沿车道驶向目的地. 一辆车 ...

  10. 黑马eesy_15 Vue:03.生命周期与ajax异步请求

    黑马eesy_15 Vue:02.常用语法 黑马eesy_15 Vue:03.生命周期 黑马eesy_15 Vue:04.Vue案例(ssm环境搭建) vue的生命周期与ajax异步请求 1.Vue的 ...