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

并行转串行数据输出:采用计数方法,将并行的数据的总数先表示出来,然后发送一位数据减一,后面的接收的这样表示: 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. PAT B1038 统计同成绩学生超时问题

    输入格式: 输入在第 1 行给出不超过 10​5​​ 的正整数 N,即学生总人数.随后一行给出 N 名学生的百分制整数成绩,中间以空格分隔.最后一行给出要查询的分数个数 K(不超过 N 的正整数),随 ...

  2. 查路由途径 traceroute tracert

    linux 用  traceroute IP windows用 tracert IP 虚拟机下使用无效

  3. 总结一些常用的训练 GANs 的方法

    众所周知,GANs 的训练尤其困难,笔者自从跳入了 GANs 这个领域(坑),就一直在跟如何训练 GANs 做「对抗训练」,受启发于 ganhacks,并结合自己的经验记录总结了一些常用的训练 GAN ...

  4. luogu P3835 【模板】可持久化平衡树

    #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> usin ...

  5. Paper Review: Epigenetic Landscape, Cell Differentiation 02

    I'll share another review paper about Epigenetic Landscape, it comes from Nature Review, published i ...

  6. C语言程序设计|05

    问题 回答 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/9772 我在 ...

  7. 打水滴(BFS)

    在一个n行m列的网格中,某些位置存在一些水滴.嘟嘟进行q次打水滴操作,每次嘟嘟在某一个网格当中添加一个水滴,当某一网格中的水滴数量超过L时,该网格中的水滴变为四个水滴,并分别向上下左右四个方向飞出,每 ...

  8. 计蒜客 蒜头君回家(有条件的BFS)

    蒜头君要回家,但是他家的钥匙在他的朋友花椰妹手里,他要先从花椰妹手里取得钥匙才能回到家.花椰妹告诉他:“你家的钥匙被我复制了很多个,分别放在不同的地方.” 蒜头君希望能尽快回到家中,他需要首先取得任意 ...

  9. DAO层使用mybatis框架有关实体类的有趣细节

    1.根据个人习惯,将储存那些数据库查询结果集有映射关系的实体类的Package包名有如下格式: cn.bjut.domain cn.bjut.pojo cn.bjut.model cn.bjut.en ...

  10. RE数组开多大?

    #include<iostream> using namespace std; ][]; int main() { int n, m; ; i <= ; i++) { a[][i] ...