FPGA之乒乓操作
比如将乒乓操作运用在液晶显示的控制模块上,如图所示。
module pingpang
(
input clk ,
input rst_n ,
input [:] data_in , // 输入数据
output reg [:] data_out // 输出数据
); // ------------------------------------------------------ //
reg [:] buffer1 ; // 缓存1
reg [:] buffer2 ; // 缓存2
reg wr_flag ; // 写标志,wr_flag=0,写buffer1,wr_flag=1,写buffer2
reg rd_flag ; // 读标志,rd_flag=0,读buffer2,rd_flag=1,读buffer1
reg state ; // 状态机,0:写1读2,1:写2读1,状态转移和输出分开编码
// ------------------------------------------------------ //
// 状态转移
always @ (posedge clk or negedge rst_n)
begin
if(rst_n == 'b0)
begin
state <= 'b0;
end
else
begin
state <= !state;
//case(state)
// 1'b0 : state <= 1'b0; // 写1读2->写2读1
// 1'b1 : state <= 1'b1; // 写2读1->写1读2
// default : state <= 1'b0;
//endcase
end
end
// ------------------------------------------------------ //
// 状态输出
always @ (state)
begin
case(state)
'b0:
begin
wr_flag = 'b0; // 写1
rd_flag = 'b0; // 读2
end
'b1:
begin
wr_flag = 'b1; // 写2
rd_flag = 'b1; // 读1
end
default:
begin
wr_flag = 'b0;
rd_flag = 'b0;
end
endcase
end
// ------------------------------------------------------ //
// 写buffer数据
always @ (posedge clk or negedge rst_n)
begin
if(rst_n == 'b0)
begin
buffer1 <= 'b0;
buffer2 <= 'b0;
end
else
begin
case(wr_flag)
'b0 : buffer1 <= data_in; // wr_flag = 0,写buffer1
'b1 : buffer2 <= data_in; // wr_flag = 1,写buffer2
default :
begin
buffer1 <= 'b0;
buffer2 <= 'b0;
end
endcase
end
end
// ------------------------------------------------------ //
// 读buffer数据
always @ (posedge clk or negedge rst_n)
begin
if(rst_n == 'b0)
begin
data_out <= 'b0;
end
else
begin
case(rd_flag)
'b0 : data_out <= buffer2; // rd_flag=0,读buffer2
'b1 : data_out <= buffer1; // rd_flag=1,读buffer1
default : data_out <= 'b0;
endcase
end
end
// ------------------------------------------------------ //
endmodule
2.2 FPGA仿真代码
`timescale 1ns / 1ps module pingpang_tb(); reg clk ;
reg rst_n ;
reg [:] data_in ; wire[:] data_out; always # clk = ~clk; initial
begin
rst_n <= 'b0 ;
clk <= 'b0 ;
#;
rst_n <= 'b1 ;
end always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
data_in <= 'd0;
else
data_in <= data_in + 'b1;
end pingpang dut
(
.clk (clk ),
.rst_n (rst_n ),
.data_in (data_in ), .data_out (data_out )
); endmodule
3.仿真结果
FPGA之乒乓操作的更多相关文章
- 【FPGA技巧篇一】FPGA设计的四种常用思想与技巧之一 :乒乓操作
本文篇章将讨论一下的四种常用 FPGA 设计思想与技巧: 乒乓操作. 串并转换. 流水线操作. 数据接口同步化, 都是 FPGA 逻辑设计的内在规律的体现, 合理地采用这些设计思想能在FPGA设计工作 ...
- FPGA SD 卡 之 乒乓操作 、同步fifo
这里记录一个实际的需要使用乒乓操作的例子:读sd卡数据的时,在spi的模式下.发送单数据块的读取命令,在回应之后会有 512字节的数据.使用乒乓操作,可以用两个八位的寄存器,就可以完成连续的512字节 ...
- sdram之乒乓操作
在实时显示时,为了保证画面显示的完整性需要对SDRAM进行乒乓操作. SDRAM 中有 4 个bank ,地址分别为00 01 10 11,后面将用 0 1 2 3来描述 bank 0和1 作为第一个 ...
- DMA缓冲区乒乓操作的处理
http://www.51hei.com/bbs/dpj-141761-1.html https://blog.csdn.net/sunnydreamrain/article/details/8288 ...
- FPGA重要设计思想
FPGA重要设计思想 1.速度和面积互换原则.以面积换速度可以实现很高的数据吞吐率,其实串/并转换.就是一种以面积换速度的思想 2.乒乓操作. 3.串/并转换的思想. 高速数据处理的重要技巧之一. ...
- [华清远见]FPGA公益培训
本套视频教程为华清远见 网络公益培训活动,主讲人:姚远老师,华清远见高级讲师. ------------------------------------------------------------ ...
- 【转】 FPGA设计的四种常用思想与技巧
本文讨论的四种常用FPGA/CPLD设计思想与技巧:乒乓操作.串并转换.流水线操作.数据接口同步化,都是FPGA/CPLD逻辑设计的内在规律的体现,合理地采用这些设计思想能在FPGA/CPLD设计工作 ...
- CPLD VS FPGA
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL.GAL.CPLD等可编程器件的基础上进一步发展的产物.它是作为专用集成电路(ASIC)领域中的 ...
- FPGA/CPLD设计思想与技巧
本文讨论的四种常用FPGA/CPLD设计思想与技巧:乒乓操作.串并转换.流水线操作.数据接口同步化,都是FPGA/CPLD逻辑设计的内在规律的体现,合理地采用这些设计思想能在FPGA/CPLD设计工作 ...
随机推荐
- saltStack_安装和使用
服务端: yum install -y salt-master 客服端: yum install -y salt-minion 服务端启动: systemctl restartsalt-master ...
- iptables 操作规则
iptables -nL查看本机关于iptables的设置情况,默认查看的是-t filter,可以指定-t nat iptables-save > iptables.rule会保存当前的防火墙 ...
- 【tensorflow】】模型优化(一)指数衰减学习率
指数衰减学习率是先使用较大的学习率来快速得到一个较优的解,然后随着迭代的继续,逐步减小学习率,使得模型在训练后期更加稳定.在训练神经网络时,需要设置学习率(learning rate)控制参数的更新速 ...
- 2019年CPS-J复赛题解
题目涉及算法: 数字游戏:字符串入门题: 公交换乘:模拟: 纪念品:完全背包: 数字游戏:广搜/最短路. 数字游戏 题目链接:https://www.luogu.com.cn/problem/P566 ...
- H3C 对等通信
- 不需内测账号,带你体验微信小程序完整开发过程
不需内测账号,带你体验微信小程序完整开发过程 2016年09月24日 - 作者: SwiftCafe 微信小程序还没正式发布就已经迅速成为大家讨论的焦点,那么大家可能觉得只有收到内测邀请才能体验小程序 ...
- Java反射机制(一):认识Class类
一. 认识Class类 1.1 正常我们再使用一个类时,大多情况是先获取类的对象,然后通过对象去操作类中的属性或方法. 那,大家有没有想过,如果我们已经有了一个类的对象,我能否通过该对象去获取到类的信 ...
- H3C Easy IP配置举例
- Redux action 状态
action 不同的状态,设置不同的action.type [就是一个名字],返回对应的数据 不同的状态返回不同的 接口数据
- ActiveMQ安装报错Wrapped Stopped解决办法
在安装ActiveMQ的时候遇到了这个问题,一直报Wrapper Stopped 先开始也是修改环境变量,重启电脑,发现没有用,后来打开任务管理器,关闭了erl.exe,就成功了. 原文地址:http ...