数字逻辑不容小窥,电路门一统江湖
本文选题:电子技术 + 半导体集成电路
实际上,HDL语言肯定要比《玩转IP core》或者《IP核芯志》(业界著名的和尚书)这样的讲系统设计的书来的基础。按照从简单到复杂的思想,应该先说说Verilog方为合适。当年老衲也是低估了搞笑的呐喊的先知(jiaoshou)们的毁人不倦,觉得“语言嘛,应该会的了”。结果坊间出现了不少C Style的和尚书的实现,老夫就出离愤怒了:是可忍孰不可忍!实际上私下说,老衲不想涉及教语言也有私心杂念:语言莫过于刻板的规则,讲起来也是单调:讲的不喜欢,听的也不喜欢。看看前面两讲的内容,仅仅就幽默感而言,比起和尚书差远了。但是,没办法啊,与其叫语法党、逻辑派横行,不如老夫的电路门一统江湖。我们接着聊!
数字逻辑的了分为组合电路和时序电路两种。组合电路就是即来即服务,信号来了,理论上结果立即呈现。时序电路呢,则对于员工比较人道:在固定时间工作,其他时间可以歇着。
1. 组合逻辑,线型实现
组合逻辑在Verilog语言体系里面分两类,分别采用wire类型变量和reg类型变量来完成。本讲主要介绍第一类:wire类型变量型组合逻辑描述方法。在下一讲里面,会介绍reg的情况。
提到wire类型变量型组合逻辑描述方法,一个不能会的关键词就是“assign”。它用于对于wire类型变量的赋值。assign赋值的一般形式为:
assign [drive_strength] [delay] net_lvalue = expression;
其中:drive_strength为信号强度,delay为设定时延,net_lvalue 为wire型变量名,expression为表达式;方括号对“[ ]”表示可省略,而且这两个内容与电路逻辑设计无关,在此不详细论述。
例1给出了一个直通模块的完整代码。这段代码没有实际意义,就是输出时时刻刻等于输入的功能。各位听众需要掌握的只是完整模块代码的格式。
【例1】直通模块的完整代码
/***********************************************
Module Name: Bypass
Feature: Input bypass to output
Coder: Garfield
Organization: XXXX Group, Department of Architecture
------------------------------------------------------
Input ports: Input_Data, 8 bits
Output Ports: Output_Data, 8 bits, equales Input_Data
------------------------------------------------------
History:
11-27-2015: First Version by Garfield
11-27_2015: Verified by Garfield with Bypass_test in ISE/Modelsim
***********************************************/
module Bypass
(
input[7:0] Input_Data,
output wire[7:0] Output_Data
);
//Definition for Variables in the module
//None for this module
//Logical
assign Output_Data = Input_Data;
endmodule
说明一下,因为这个模块实际上不具有逻辑功能,所以一般综合软件都会在给出警告(Warning)后,,把这个模块优化掉。
本文编号:2004354
本文链接:https://www.wllwen.com/wenshubaike/dxkc/2004354.html