Verilog HDL(七):异步寄存器fpga与cpu进行并口通信 (异步并口时序仿真)

1、并口经常用于FPGA和cpu芯片通信、配置寄存器、跨芯片数据传输等。
2、源同步传输:发送端同时发送时钟和数据给接收端,接收端使用源端发送的时钟采样数据。
3、异步并口通信:
异步并口应用:
--cpu类的芯片(dsp、stm32)与FPGA的数据交互,数据速率一般在100Mbps以内,数据总线不大于16bit。
--非cpu类的功能芯片与FPGA通过并口进行数据交互,例如配置寄存器等。
并口信号说明:
--chip select片选信号,简写为cs_n,此信号低有效,当被拉低的时候,表示此器件的并口被激活。
--write enable写使能信号,简写为we_n,信号低有效,当被拉低时表示此时地址总线和数据总线的地址数据是写入操作的。
--read enable读使能信号,简写为rd_n,此信号低有效,当被拉低时表示此时地址总线和数据总线的地址和数据是读入操作。
--Addr[7:0]地址总线,表示读写的地址。
--Data[15:0]数据总线,此总线是双向总线,读操作时数据总线上是读取的数据,写操作时数据总线上是写入的数据。
写操作时序见图:


--并口不适合高速传输且占用管脚数量很多,优点是简单,逻辑简单。

--异步并口的异步是指主机不输出时钟信号给从机用作它们之间的通讯,异步并口的并口是指主-从机之间的数据线(此例为16根)和地址线有多根(此例为8根),且主-从机之间的数据交互是并行的。

--如上图所示,cs_n为异步并口的片选信号,低电平有效;rd_n为读使能信号,低电平有效;we_n为写使能信号,低电平有效;data为数据总线,位宽为16bit;addr为地址总线,位宽为8bit。

--如上图所示,当cs_n为低电平时,FPGA被主机片选中,当FPGA检测到we_n信号被拉低时,即进入到异步并口的写状态,数据通过data数据总线送入FPGA,并按照addr地址总线上的地址值将数据存放到指定存储空间上(如:RAM、FIFO等)。

读操作时序见图:


--读等待(设置为40ns),是为了使地址数据稳定之后才赋值给端口。

--上图为异步并口的读操作时序,当cs_n为低电平时,FPGA被主机片选中,当FPGA检测到rd_n信号被拉低时,即进入到异步并口的读状态,FPGA按照addr地址总线上的地址值从指定存储位置上将数据读出并送到data数据总线上,以供主机设备读走。
4、往寄存器中存储数据,对寄存器寻址。
5、cs_n和wr_n是两个握手操作的信号。
6、寄存器打拍延时--延时时钟数为n,需要延时的数据为xbit,则使用移位寄存器进行延时的格式为:
reg  [3*n,0]  Data_r;
Data_r <= {Data_r[(n-1)*x,0],Data};--最后三个时钟后Data_r的高n位即为延时后的输出。
例如:
data_r <= {data_r[31:0],data}; //data为16bit,要打三拍,所以总的打拍寄存器为16*3=48bit,前面的为16*2=32bit
addr_r <= {addr_r[15:0],addr}; //addr为8bit,要打三拍,所以总的打拍寄存器为8*3=14bit,前面的为8*2=16bit
7、当task中含有参数的时候,参数需要在task中声明


                
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值