FPGA设计思想之串并转换
数据流中,用面积换速度-串行转并行的操作
并行转串行数据输出:采用计数方法,将并行的数据的总数先表示出来,然后发送一位数据减一,后面的接收的这样表示: 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设计思想之串并转换的更多相关文章
- FPGA设计思想与技巧(转载)
题记:这个笔记不是特权同学自己整理的,特权同学只是对这个笔记做了一下完善,也忘了是从那DOWNLOAD来的,首先对整理者表示感谢.这些知识点确实都很实用,这些设计思想或者也可以说是经验吧,是很值得每一 ...
- 09A-独立按键消抖实验01——小梅哥FPGA设计思想与验证方法视频教程配套文档
芯航线--普利斯队长精心奉献 实验目的: 1.复习状态机的设计思想并以此为基础实现按键消抖 2.单bit异步信号同步化以及边沿检测 3.在激励文件中学会使用随机数发生函数$random 4.仿真模 ...
- 08-FPGA状态机设计实例——小梅哥FPGA设计思想与验证方法视频教程配套文档
芯航线--普利斯队长精心奉献 实验目的:1.学习状态机的相关概念 2.理解一段式.两段式以及三段式状态机的区别以及优缺点 实验平台:芯航线FPGA核心板 实验原理: 状态机全称是有限状态机(fin ...
- 02-FPGA设计流程介绍——小梅哥FPGA设计思想与验证方法视频教程配套文档
芯航线——普利斯队长精心奉献 课程目标: 1.了解并学会FPGA开发设计的整体流程 2.设计一个二选一选择器并进行功能仿真.时序仿真以及板级验证 实验平台:芯航线FPGA开发板.杜邦线 实验内容: 良 ...
- 10-8位7段数码管驱动实验——小梅哥FPGA设计思想与验证方法视频教程配套文档
芯航线--普利斯队长精心奉献 实验目的: 1.实现FPGA驱动数码管动态显示: 2.使用In system sources and probes editor工具,输入需要显示在数码管上的的数据, ...
- 09B-独立按键消抖实验02——小梅哥FPGA设计思想与验证方法视频教程配套文档
芯航线--普利斯队长精心奉献 实验目的: 1.复习按键的设计 2.用模块化设计的方式实现每次按下按键0,4个LED显示状态以二进制加法格式加1,每次按下按键1,4个LED显示状态以二进制加法格式减 ...
- 05-IP核应用之计数器——小梅哥FPGA设计思想与验证方法视频教程配套文档
芯航线--普利斯顿队长精心奉献 实验目的:了解FPGA的IP核相关知识并以计数器IP核为例学会基本IP使用的流程 实验平台:无 实验原理: IP核(Intellectual Propert ...
- 04-时序逻辑电路设计之计数器——小梅哥FPGA设计思想与验证方法视频教程配套文档
芯航线--普利斯队长精心奉献 实验目的:以计数器为例学会简单的时序逻辑电路设计 实验平台:芯航线FPGA核心板 实验原理: 时序逻辑电路是指电路任何时刻的稳态输出不仅取决于当前的输入,还与前一时刻输入 ...
- 03-组合逻辑电路设计之译码器——小梅哥FPGA设计思想与验证方法视频教程配套文档
芯航线——普利斯队长精心奉献 课程目标: 1. 再次熟悉Quartus II工程的建立以及完整的FPGA开发流程 2. 以译码器为例学会简单组合逻辑电路设计 实验平台:无 实验原理: 组合逻辑, ...
随机推荐
- codeblocks无法找到编译器问题的三个原因
出现如下提示: 查看了网上的资料, 1.编译器选择错误 查看路径:setting→compiler Selected compiler选取你已经安装且准备使用的编译器. 2.工程创建时配置错误 查看路 ...
- 药物动力学|肿瘤药物基因组研究的策略|OMIM database|PharmGKB
生命组学 同义突变虽然不改变蛋白质种类,但是影响量,修饰的稳定性. SNP vs mutation SNV单核苷酸变化,mutation,SNP是从群体角度思考的,约有1%,mutation比SNP还 ...
- POJ-1703 Find them, Catch them(并查集&数组记录状态)
题目: The police office in Tadu City decides to say ends to the chaos, as launch actions to root up th ...
- MVC的异步模式
[小家Spring]高性能关键技术之---体验Spring MVC的异步模式(Callable.WebAsyncTask.DeferredResult) 基础使用篇 https://blog.csdn ...
- Java之线程通信的方法
/** * 线程通信的例子:使用两个线程打印 1-100.线程1, 线程2 交替打印 * * 涉及到的三个方法: * wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器. * no ...
- 年近30的Java程序员为了达到月入三万的目标,都做了哪些准备?
1.我觉得像我这般年纪的(29岁),有相对扎实技术功底的(就不自谦了),对赚钱有着强烈欲望的程序员,应该定一个切实的小目标——五年内月入三万! 之所以要定这个目标,最主要的原因是老婆的批评刺痛了我—— ...
- typescript-学习使用ts-1
Hello World 新建 greeter.ts 并写入以下内容: function greeter(person) { return "Hello, " + person; } ...
- python uiautomator2 新版本2.4.6之watcher的玩法
最近将uiautomator2升级到最新版本了,运行之前的脚本发现涉及watcher部分的全部报错,大家来看看新版本的watcher如何玩 用法举例 注册监控 # 常用写法,注册匿名监控 d.watc ...
- ubuntu 卸载软件
ubuntu完全卸载一个软件 今天卸载一个软件,老是有配置残留,网上找到了解决方案: 查看已安装的软件: dpkg -l |grep 软件名 找到一大堆相关的包,然后卸载核心的包: sudo ap ...
- DocCms_2016 代码审计
0x00 结构浏览 按照代码审计的惯例,拿到这款cms之后首先浏览了一下目录结构,在基本了解之后,首先进入/index.php,这里包含了两个文件:/admini/config/qd-config.p ...