免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 6928 | 回复: 20
打印 上一主题 下一主题

《硬件软件接口》上有点不清楚 [复制链接]

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-28 22:06 |只看该作者 |倒序浏览
本帖最后由 smalloc 于 2010-09-29 11:05 编辑

单时钟周期的指令设计是所有的动作在一个时钟内完成
而多周期可以配合流水线
那么分阶段的最小单元的限制条件是什么?
在一个时钟内完成的动作内部数据通路只能有且必有一次寄存?

论坛徽章:
0
2 [报告]
发表于 2010-09-29 10:46 |只看该作者
忘了,我身边全是设计Arch的。

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
3 [报告]
发表于 2011-01-02 22:51 |只看该作者
本帖最后由 smalloc 于 2011-01-03 12:30 编辑

由这个帖子 http://linux.chinaunix.net/bbs/thread-1176129-1-1.html
回想起了这个帖子.上面的结论是成立的.
在中文版本189面讲的就是这个问题.
另外图5-4中说:状态单元的更新由时钟边缘触发,所以不可能在一个时钟周期内出现反馈.
考虑这个图.
------->[状态单元]--------------->(组合逻辑)----------------
|                                                                                    |
------------------------------------------------------------
但是这段话实际上与523面的描述不是精确符合
523面对D触发器的描述为主从锁存器(一般数字电路书上叫主从触发器),通过时钟上 下2个边缘控制.即在2个边缘都有电路变化.我觉得这个才是真实的不会反馈的原因.
考虑只有一级触发器时,首先边缘触发方式有2种,主要是控制数据有效传入时,分为元件延时和反馈延时,其效果就是在一个很短的水平电平期间允许输入.所以本质上和电平触发区别并不大.但是不管哪种方式.在输出后通过组合电路反映到输入,而输入通过边缘期间控制输出, 是不可能不发生反馈的.
520面也提到了一种时钟控制方法.用时钟决定何时数据有效.这实际上一种比较慢速的方法.可能数据有效无效要多个时钟周期精确控制.当然并不意味着只有一级的时候不会发生反馈.

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
4 [报告]
发表于 2011-01-03 01:20 |只看该作者
一般单沿触发器,一个时钟周期只可以变一次;
双沿触发器,一个时钟可以变两次。
话说回来,我没有用过支持双沿的fpga

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
5 [报告]
发表于 2011-01-03 12:56 |只看该作者
上面说的改变2次.不是指触发器外面,而是指里面.因为存在主从结构.从外面看也只一次
比如假设是上升边沿触发,对与上图,从输出经过组合电路改变主锁存器,在下降边沿,主再改变从.
如果没有主从结构,仅在上升边沿完成所有的操作,很难想象不反馈.除非触发器输出的电信号载体是被"挤"到组合电路中去.并且一旦出去就不再影响.也就是单向的挤,还得有一点延时,当信号再从组合电路出来进入触发器输入.这个时候又要保证输出已经被钳断...
这个方式存在的一种可能电路是

------->[1边沿触发状态单元]----->[2边沿触发的锁存器]-------(组合逻辑)----->
这个结构就和主从触发器一样了.区别在于在一个时钟上升边沿要精确通过延时做到:边沿2先有效输入开启,边沿1再开启,在状态单元输出改变前边沿2禁止,也就是保证整个路不出现环.

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
6 [报告]
发表于 2011-01-03 22:44 |只看该作者
本帖最后由 cjaizss 于 2011-01-03 22:45 编辑
上面说的改变2次.不是指触发器外面,而是指里面.因为存在主从结构.从外面看也只一次
比如假设是上升边沿触发 ...
smalloc 发表于 2011-01-03 12:56



    我说的双沿触发器改变两次当然是指该“寄存器”的值(输出)被改变两次,否则哪能叫双沿触发器?一般不会使用这样的触发器

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
7 [报告]
发表于 2011-01-04 22:44 |只看该作者
我说的双沿触发器改变两次当然是指该“寄存器”的值(输出)被改变两次,否则哪能叫双沿触发器? ...
cjaizss 发表于 2011-01-03 22:44



    给一个比较简单的双沿触发器的架构,用verilog如下描述,由三个两路复用器搭成
module MUX(out,in0,in1,sel);
input in0,in1,sel;
output out;
assign out=sel?in1:in0;
endmodule

module DET_ff(D,clk,Q);
input D,clk;
output Q;
wire sig0,sig1;
MUX mux1(sig0,sig0,D,clk);
MUX mux2(sig1,D,sig1,clk);
MUX mux3(Q,sig0,sig1,clk);
endmodule

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
8 [报告]
发表于 2011-01-04 22:46 |只看该作者
我们再来写一个testbench.
其中D,clk部分我用以下脚本生成
#!/bin/bash
clk=0
D=0
for((i=1;i<100;i++));do
        echo '#10;'
        let x=RANDOM%2
        if [ $x = 1 ];then
                let D=\!D;
                echo D="$D;"
        else
                let clk=\!clk;
                echo clk="$clk;"
        fi
done
之后生成的test bench如下:

  1. module test_bench_DET_ff;
  2. reg D,clk;
  3. wire Q;
  4. initial
  5. begin
  6. clk=0;
  7. D=0;
  8. #10;
  9. D=1;
  10. #10;
  11. D=0;
  12. #10;
  13. clk=1;
  14. #10;
  15. D=1;
  16. #10;
  17. D=0;
  18. #10;
  19. D=1;
  20. #10;
  21. clk=0;
  22. #10;
  23. clk=1;
  24. #10;
  25. clk=0;
  26. #10;
  27. D=0;
  28. #10;
  29. D=1;
  30. #10;
  31. D=0;
  32. #10;
  33. D=1;
  34. #10;
  35. D=0;
  36. #10;
  37. clk=1;
  38. #10;
  39. D=1;
  40. #10;
  41. clk=0;
  42. #10;
  43. D=0;
  44. #10;
  45. D=1;
  46. #10;
  47. clk=1;
  48. #10;
  49. clk=0;
  50. #10;
  51. clk=1;
  52. #10;
  53. D=0;
  54. #10;
  55. D=1;
  56. #10;
  57. D=0;
  58. #10;
  59. clk=0;
  60. #10;
  61. D=1;
  62. #10;
  63. D=0;
  64. #10;
  65. D=1;
  66. #10;
  67. clk=1;
  68. #10;
  69. D=0;
  70. #10;
  71. D=1;
  72. #10;
  73. D=0;
  74. #10;
  75. D=1;
  76. #10;
  77. clk=0;
  78. #10;
  79. clk=1;
  80. #10;
  81. D=0;
  82. #10;
  83. clk=0;
  84. #10;
  85. clk=1;
  86. #10;
  87. D=1;
  88. #10;
  89. clk=0;
  90. #10;
  91. clk=1;
  92. #10;
  93. clk=0;
  94. #10;
  95. D=0;
  96. #10;
  97. D=1;
  98. #10;
  99. D=0;
  100. #10;
  101. clk=1;
  102. #10;
  103. D=1;
  104. #10;
  105. clk=0;
  106. #10;
  107. D=0;
  108. #10;
  109. D=1;
  110. #10;
  111. clk=1;
  112. #10;
  113. D=0;
  114. #10;
  115. D=1;
  116. #10;
  117. clk=0;
  118. #10;
  119. D=0;
  120. #10;
  121. D=1;
  122. #10;
  123. D=0;
  124. #10;
  125. clk=1;
  126. #10;
  127. D=1;
  128. #10;
  129. D=0;
  130. #10;
  131. D=1;
  132. #10;
  133. clk=0;
  134. #10;
  135. clk=1;
  136. #10;
  137. D=0;
  138. #10;
  139. clk=0;
  140. #10;
  141. clk=1;
  142. #10;
  143. clk=0;
  144. #10;
  145. D=1;
  146. #10;
  147. D=0;
  148. #10;
  149. D=1;
  150. #10;
  151. D=0;
  152. #10;
  153. D=1;
  154. #10;
  155. clk=1;
  156. #10;
  157. clk=0;
  158. #10;
  159. clk=1;
  160. #10;
  161. D=0;
  162. #10;
  163. D=1;
  164. #10;
  165. D=0;
  166. #10;
  167. D=1;
  168. #10;
  169. clk=0;
  170. #10;
  171. clk=1;
  172. #10;
  173. clk=0;
  174. #10;
  175. clk=1;
  176. #10;
  177. D=0;
  178. #10;
  179. clk=0;
  180. #10;
  181. D=1;
  182. #10;
  183. D=0;
  184. #10;
  185. D=1;
  186. #10;
  187. D=0;
  188. #10;
  189. clk=1;
  190. #10;
  191. clk=0;
  192. #10;
  193. D=1;
  194. #10;
  195. clk=1;
  196. #10;
  197. clk=0;
  198. #10;
  199. clk=1;
  200. #10;
  201. clk=0;
  202. #10;
  203. clk=1;
  204. #10;
  205. clk=0;

  206. $stop();   
  207. end
  208. DET_ff A(D,clk,Q);
  209. endmodule
复制代码

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
9 [报告]
发表于 2011-01-04 22:50 |只看该作者
modlesim仿真结果如下:

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
10 [报告]
发表于 2011-01-05 10:18 |只看该作者
modlesim仿真结果如下:
cjaizss 发表于 2011-01-04 22:50



    带复位的双沿触发
module MUX(out,in0,in1,sel);
input in0,in1,sel;
output out;
assign out=sel?in1:in0;
endmodule

module DET_ff(D,clk,rst,Q);
input D,clk,rst;
output Q;
wire sig0,sig1;
wire _sig0,_sig1;
parameter INIT_VALUE_AFTER_RESET=0;
assign sig0=rst?INIT_VALUE_AFTER_RESET:_sig0;
assign sig1=rst?INIT_VALUE_AFTER_RESET:_sig1;
MUX mux1(_sig0,sig0,D,clk);
MUX mux2(_sig1,D,sig1,clk);
MUX mux3(Q,sig0,sig1,clk);
endmodule
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP