原创 ARM与FPGA 数据交换

2015-8-3 09:56 958 20 22 分类: FPGA/CPLD

看了特权同学的书后,有不明白的地方,见于 “同步设计思想”:

01245.jpg

 

 

读写同时触发时有可能总线冲突。

正确的做法没有完全看懂。但我目前的做法好像也没遇到总线冲突的现象,怎么评判?

我的做法:  不用脉冲信号A做触发来计数,而是对脉冲做处理产生和时钟同步且宽度为一个时钟周期的信号B,然后对B计数。

计数代码如下。

always@(posedge CLK or  posedge RESN)

begin

if (RESN == 1)

cnt <= 32'b0;

else 

   if( B )

cnt <= cnt + 1'b1;

end

assign Dout = cnt;

 

读取代码如下。

 

always@( posedge CLK or posedge  RESN)

case(WE,OE,CE,ADDR)     //ADDR为地址线,DBUS为数据线。

              9'b100000111:  DBUS <= Dout;                      

      

按书上的说法,以上做法也会产生读写冲突,可实际的情况是计数很准确,电机也运转正常。

 

 

 

文章评论2条评论)

登录后参与讨论

用户1696769 2016-3-9 11:07

期待博主的继续更新哈

用户376150 2015-9-7 09:59

显示位置偶尔停止的原因已找到,为ARM的程序溢出bug,与FPGA无关。 按照网友的讲解,读写同步时,读的是上个时钟周期的值,写操作是写当前,故同步时钟了才不会冲突。

用户376150 2015-8-24 15:52

前些天在出差,中断了这一块的工作。现在继续。确实发现问题:速度模式下,不滤波的反馈速度最大波动为 2.2% 。而电机转动时,显示的位置值偶尔会停止变动1、2秒。明显不正常。 没有那么简单。
相关推荐阅读
用户376150 2016-04-01 14:03
回顾modelsim的使用
1. 首先,在新建工程里创建2个*.v文件,一个是被仿真代码,一个是测试代码。 2. 右键点击这2个文件的其中之一,选择“compile all” 3. 编译无误后,在菜单栏“view”中...
用户376150 2016-02-25 17:00
安装matlab2013b
      今天想装一下matlab2013b软件。过程写下来。   1.在百度贴吧找到一个下载链接,下载完后,看到有tamwoR13b.part01--part21共21个r...
用户376150 2016-02-24 14:40
simulink的命令集
simulink的命令集仿真命令sim           仿真运行一个simulink模块     sldebug       调试一个simulink模块     simset        设置...
用户376150 2016-01-18 17:00
SIMULINK
simulink 下的积分模块有很多选项可设定,特别是离散积分模块,工作模式有2种:intergration 和 accumulation 。前者的Ts为采样时间,而后者的Ts 固定为1,即累加的...
用户376150 2016-01-14 13:46
普通人缺什么
觉得过得很艰难?? 可能原因: 1.目标感不强 2.缺乏死磕精神  ...
用户376150 2016-01-12 13:47
对拖负载的原理图
此图为对拖的原理图:被拖负载电机发出3相交流电经过整流,大电容平波后变为直流。用PWM波的占空比控制负载电流的大小即可。图上有点小错误,PWM控制的是IGBT管,不是继电器。...
我要评论
2
20
关闭 站长推荐上一条 /2 下一条