作者andy14 (Andy)
看板Programming
标题Re: [问题] verilog自学线上课程或书本推荐
时间Thu Aug 25 20:57:45 2016
我看你4bit adder写得差不多了 基本概念也就这样
这里还是大概讲一下题目的硬体要怎麽组合出来
首先当然就是确定in,output
input有a0~3, b0~3, Ci; output有s0~3跟Co
先宣告IO
module decAdder(input a3, a2, a1, a0, b3, b2, b1, b0, Ci,
output s3, s2, s1, s0, Co);
接下来输入直接连接至4bit adder input
fulladder4bit U0(.A( {a3,a2,a1,a0} ), .B( {b3,b2,b1,b0} ), .Cin(Ci),
这里{}目的在把a3~a0,b3~b0组成4bit以符合4bit adder的输入
接下来输出由於是内部的接线 所以要先宣告 (实际在写时必须宣告在前面)
wire z3, z2, z1, z0, K;
刚刚的fulladder4bit输出端则继续写完,这里我们也连接完一个4bit adder
.Z( {z3,z2,z1,z0} ), .Cout(K));
而另外一个4bit adder一样按图连接 输出直接连到output(s3~s0)
fulladder4bit U1(.A( {z3,z2,z1,z0} ), .B( {1'b0,Co,Co,1'b0} ), .Cin(1'b0),
.Z( {s3,s2,s1,s0} ), .Cout());
这样两个4bit adder就搞定了 只剩下2个and闸跟1个三输入xor闸
先宣告两个and闸的输出再接线
wire o1, o2;
and U2(o1, z3, z2);
and U3(o2, z3, z1); 这种是逻辑闸层次的写法
最後的三输入xor输出端Co用另外一种写法
assign Co = K^o1^o2;
endmodule
差不多就是这样了......verilog基本上就是在组合硬体元件
在写之前一定要有一张硬体蓝图在脑中
规划硬体从大至小 写则是从小到大
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.176.83.78
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Programming/M.1472129868.A.19B.html
1F:推 Lenient: Wow超感谢大大我刚一看到就开始写了,你 118.233.28.244 08/26 00:34
2F:→ Lenient: 给的想法思路都很清晰,让我这个初学者也 118.233.28.244 08/26 00:34
3F:→ Lenient: 可以一目了然。现在也确认ok了,接下来 118.233.28.244 08/26 00:34
4F:→ Lenient: 我在打tesrbench 真的很谢谢大大 有空请 118.233.28.244 08/26 00:34
5F:→ Lenient: 大大吃个饭 不知大大是哪里人 118.233.28.244 08/26 00:34
6F:推 JFLung9536: 这些都算简单 入门 同步 非同步 DS 42.72.16.249 08/26 12:33
7F:→ JFLung9536: P. DDR. 学会才是关键 42.72.16.249 08/26 12:33
8F:→ JFLung9536: 原po讲的最後一段是皆层的观念 线路 42.72.16.249 08/26 12:36
9F:→ JFLung9536: 不在是原本你所学的 左进右出 而是一 42.72.16.249 08/26 12:36
10F:→ JFLung9536: 层控制一层 RTL的观念 先学会自己想 42.72.16.249 08/26 12:36
11F:→ JFLung9536: 一颗CPU 吧 42.72.16.249 08/26 12:36
12F:→ JFLung9536: 当你能写出一颗 处理器 你就算学会而 42.72.16.249 08/26 12:38
13F:→ JFLung9536: 已 还没到精深 看你的造化了 42.72.16.249 08/26 12:38
14F:推 Lenient: 谢谢j大的提点,我会先把基础功学好在求 118.233.28.244 08/26 23:47
15F:→ Lenient: 精,也感谢各位大大的教导 118.233.28.244 08/26 23:47
16F:推 tw88: 推125.231.218.194 08/30 13:43