赞
踩
https://hdlbits.01xz.net/wiki/Main_Page HDLBits — Verilog Practice 在线练习网站
- `default_nettype none
- module top_module (
- input a,
- input b,
- input c,
- input d,
- output out,
- output out_n);
- assign out = (a & b)| (c & d);
- assign out_n = (~a & b)| (c & d);
-
- endmodule
default_nettype none 是一个宏定义语句,这里是直接驱动。为便于理解代码可为
- default_nettype none
- module top_module(
- input a,
- input b,
- input c,
- input d,
- output out,
- output out_n );
- wire and_1 = a & b;
- wire and_2 = c & d;
- wire or_1 = and_1 | and_2;
- assign out = or_1;
- assign out_n = ~or_1;
- endmodule
4 个 assign 语句,因为在定义 3 个中间信号的同时,还给它们赋了值,这在 Verilog 语法中也是允许的
本题要实现个稍稍复杂的电路:数电芯片 7458 。它有 10 个输入信号,2 个输出信号。你可以选择对每个输出信号,使用一个 assign 语句,也可以先产生第一级逻辑门输出的 4 个中间信号。
实现了但没有完全实现,有5个问题
给出了一个可以做16bit加法的模块add16,实例化两个add16以达到32bit加法的。一个add16模块计算结果的低16位,另一个add16模块在接收到第一个的进位后计算结果的高16位。此32bit加法器不需要处理输入进位(假设为0)和输出进位(无需进位),但为了内部模块为了结果的正确仍要处理进位信号。(换句话说,add16模块执行16bit的a+b+cin,而顶层模块执行32bit的a+b)。
可参考HDLBits 中文导学 https://zhuanlan.zhihu.com/c_1131528588117385216
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。