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

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

  1. `timescale 1ns/1ns
  2.  
  3. module p2s
  4. (
  5. input clk,
  6. input rst_n,
  7. input load,
  8. input [:] pdata,
  9. output sclk,
  10. output sdat
  11. );
  12. `define FULL 'hf
  13. reg [:] bitcnt;
  14. reg en;
  15. reg [:] sbuff;
  16. always @(posedge clk or negedge rst_n)
  17. if(!rst_n) en <= ;
  18. else if(load) en <= 'b1;
  19. else if(bitcnt==`FULL) en <= 'b0;
  20. always @(posedge clk or negedge rst_n)
  21. if(!rst_n) bitcnt <= ;
  22. else if(en) bitcnt <= bitcnt + 'b1;
  23. else bitcnt <= ;
  24. assign sclk = bitcnt[];
  25. always @(posedge clk or negedge rst_n)
  26. if(!rst_n) sbuff <= 'b0;
  27. else if(load) sbuff <= pdata;
  28. else if(sclk) sbuff <= sbuff<<;
  29. assign sdat = sbuff[];
  30. endmodule

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

  1. module SerialToParallel(
  2. input CLK, //时钟
  3. input RSTn, //复位
  4. input Enable, //输入有效
  5. input DataIn, //串行输入
  6. output reg Ready, //输出有效
  7. output[:] Index, //并行数据索引
  8. output[:] ParallelData //并行数据输出
  9. );
  10.  
  11. reg[:] Data_Temp; //数据缓存
  12. reg[:] counter; //位数计数器
  13. reg[:] state; //状态机
  14. reg[:] Index_Temp; //索引缓存
  15.  
  16. assign Index=Index_Temp;
  17. assign ParallelData=Ready?Data_Temp:'d0;
  18.  
  19. ////////////////////////////////////////
  20. //state:
  21. //4'd0:复位
  22. //
  23. //4'd1:未复位,未使能
  24. //
  25. //4'd2:未复位,输入使能
  26. //
  27.  
  28. always@(posedge CLK or negedge RSTn)
  29. if(!RSTn)
  30. begin
  31. state<='d0; //复位
  32. Ready<=;
  33. counter<='d0;
  34. Data_Temp<='d0;
  35. Index_Temp<='d0;
  36. end
  37. else
  38. begin
  39. case(state)
  40. 'd0:
  41. begin
  42. if(!Enable)state<='d1;
  43. else state<='d2;
  44. Ready<=;
  45. end
  46. 'd1:
  47. begin
  48. if(!Enable)state<='d1;
  49. else state<='d2;
  50. Ready<=;
  51. counter<='d0;
  52. Data_Temp<='d0;
  53. end
  54. 'd2:
  55. begin
  56. if(!Enable)state<='d1;
  57. else state<='d2;
  58. case(counter)
  59. 'd0:begin Data_Temp[0]<=DataIn;counter<=counter + 1'b1;Ready<=;end
  60. 'd1:begin Data_Temp[1]<=DataIn;counter<=counter + 1'b1;Ready<=;end
  61. 'd2:begin Data_Temp[2]<=DataIn;counter<=counter + 1'b1;Ready<=;end
  62. 'd3:begin Data_Temp[3]<=DataIn;counter<=counter + 1'b1;Ready<=;end
  63. 'd4:begin Data_Temp[4]<=DataIn;counter<=counter + 1'b1;Ready<=;end
  64. 'd5:begin Data_Temp[5]<=DataIn;counter<=counter + 1'b1;Ready<=;end
  65. 'd6:begin Data_Temp[6]<=DataIn;counter<=counter + 1'b1;Ready<=;end
  66. 'd7:begin Data_Temp[7]<=DataIn;counter<=4'd0;Index_Temp<=Index_Temp + 'b1;Ready<=1'b1;end
  67. endcase
  68. end
  69. endcase
  70. end
  71.  
  72. 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. Momentum

    11.6 Momentum 在 Section 11.4 中,我们提到,目标函数有关自变量的梯度代表了目标函数在自变量当前位置下降最快的方向.因此,梯度下降也叫作最陡下降(steepest desce ...

  2. 基于libcurl的GET与POST(HTTP1.1)

    #include <stdio.h> #include <curl/curl.h> bool getUrl(char *filename) { CURL *curl; CURL ...

  3. C++构造函数概念作用

    作用: 对对象进行初始化,如给成员变量赋初值,而不用专门再写初始化函数. 防止有些对象没被初始化就使用,导致程序出错. 要求: 名字与类名相同,可以有参数,但不能有返回值(void也不行) 编译时: ...

  4. gcd--最大公因数

    求两个数的最大公倍数 考完五校的第一天,在家补视频ing,简单来说的话就是给了两个数A,B 假设他们两个的最大公倍数为d,那么A=X*d,B=Y*d gcd就是把一直gcd(B%A,A)不断更新,其中 ...

  5. 201509-2 日期计算 Java

    思路: 每月有多少天是固定的,放到数组中,2月单独判断一下. import java.util.Scanner; public class Main { public static void main ...

  6. AtCoder - 4371 Align(分类讨论)

    Align AtCoder - 4371 Problem Statement You are given N integers; the i-th of them is Ai. Find the ma ...

  7. DataStructuresAndAlgorithm--字谜游戏

    参考:http://tieba.baidu.com/p/2071585293 输入是由一些字母构成的一个二维数组以及一些单词组成.目标是要找出字谜中的单词,这些单词可能是水平.垂直或沿对角线上任何方向 ...

  8. 关于luoguU67856 数列一题

    本题采用累加法 首先这个式子\[a_n = ka_{n-1}+b\]的通项不用我说了吧 然后就是累加法 \[S_n = \sum_{i=1}^{n} a_i = \sum_{i=1}^{n} ka_{ ...

  9. Apache Commons Lang之日期时间工具类

    码农不识Apache,码尽一生也枉然. FastDateFormat FastDateFormat是一个快速且线程安全的时间操作类,它完全可以替代SimpleDateFromat.因为是线程安全的,所 ...

  10. 问题:pip命令安装好的库,pycharm却显示没有这个库

    问题: 今天发现pycharm内部安装库出了问题,导致无法安装各种库,我就在cmd下用自己安装好的pip安装各个库,成功安装后发现各个库在idle中可以成功的import,但在pycharm里却显示没 ...