作者eecheng87 (EEcheng)
看板Electronics
标题[问题] verilog观念和如何设计
时间Fri Apr 12 12:28:28 2019
各位好, 我想请教几个观念, 和一个设计verilog的想法
先问个观念:
1. 一个module结束的时机在甚麽时候? 是output被赋值的瞬间吗?
若是这样, 那如果我设计一个pipeline(多个always@(posedge clk),
最後一个always block做output的给值) 那这样不就在第一个clk的
时候output就会接到一个不知名的讯号然後结束吗, 而不会等到真正
的值来?
2. 组合电路会和循序电路写在同一个模组吗? 如下
always@(posedge clk)begin
A区........
end
......在两个block中间做一个组合电路
always@(posedge clk)begin
B区......
end
最後问一个关於怎麽设计的问题:
-- 我目前有一个变数fraction, 我想在每一次迭代中检查fraction的最高
bit是否为1, 不是则<<, 并且进入下一次迭代
-- 目前架构:
always@(input1)begin
.....做些处理得到fraction
end
always@(......
....迭代处理fraction并决定输出
.... end
-- 目前遇到的困难:
1. 输入并没有提供clock, 但是我尝试在module里面做一个clk, 但模拟
器就会报error. ( 我的clk: always#10 clk~=clk; )
若我没有clock, 是否就无法迭代?
2. 无法确保把正确的值给输出前, 下一个input讯号就来了, 还是我不需
管这个?
问题有点多, 先在这里感谢各位的帮忙 ^^
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.116.112.53
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Electronics/M.1555043310.A.C31.html
1F:推 tkhan: 一个module结束的时机在,你书念的不够多 04/12 12:47
2F:→ BellCranell: pipeline你应该要知道哪个时间的值是你要的.. 04/12 13:12
3F:推 kramasdia: 先丢掉你软体语言的包袱 module没有结束的概念 它是一 04/12 16:23
4F:→ kramasdia: 块电路 04/12 16:23
5F:推 DRQX: 请看逻辑设计/数位逻辑 的书 04/12 18:39
6F:推 a12349221: 寒假报一下cic开的verilog课程吧,成大有开课 04/13 23:35
7F:推 Neverfor: assign 跟 always比较一下 04/21 02:29
8F:推 hihihihsuan: 1. module 是一块电路,会一直存在着,你给了它什麽i 04/28 21:46
9F:→ hihihihsuan: nput它就会输出相应的结果 04/28 21:46
10F:→ hihihihsuan: 2. 组合和循序逻辑可以分开也可以合在一起,不一定要 04/28 21:46
11F:→ hihihihsuan: 分开写,分开写的话循序逻辑就只有把next值给到curre 04/28 21:46
12F:→ hihihihsuan: nt值,组合逻辑写你的function 04/28 21:46
13F:→ hihihihsuan: 3. 要在一个clk做完的话,可以用if或case来判断要shi 04/28 21:46
14F:→ hihihihsuan: ft几次才能让MSB为1,不然就会产生combination loop 04/28 21:46