任务 实现74X138的程序设计 用74X139和74X138构成5线-32线译码器 74LS139 为两个2线-4 线译码器 74X138 思路 参考译码器芯片的功能,进行输入端口到输出端口的对应,并实现相关输入控制端口的特性。 程序设计 仿真 74LS139 思路 根据功能表进行设计 程序设计 仿真 5线-32线译码器 思路 4个74X138做为输出,分别为X3,X2,X1,X0 而1片74LS139做为最高2位的选择,分别对应4片74X138 程序设计 仿真
Tag: verilog
verilog仿真——8线-3线优先编码器CD4532
任务 实现CD4532的设计与仿真 用2片CD4532构成16线-4线优先编码器 CD4532 实现思路 根据示例基本掌握verilog的语法,可以进行自主设计。 原本想通过逻辑表达式将编码器的内部逻辑表达,但看到示例中有用到case的语法,是人易读的表达方式,因此改为用case语句将输入信号映射至对应的输出编码。 对于优先编码问题,涉及到优先级高位有效,忽略低位输入,则采用casex实现,详见代码 原本直接将所有输入输出端口列写,同样看到示例中利用数组结构,更简单易读 设计 注意问题: 赋值语句用 ; 分隔 多个语句利用 begin 和 end成块 注意end和endmodule不要遗漏 仿真 16线-4线优先编码器 实现思路 各用一片接收8线的输入信号,分别用CD1代表高8位,CD0代表低8位,特性是: 只要高8位有效,低8位的输入无效 此时4位编码的高位有效 高8位无效时,读取低8位的输入 高8位与低8位的输入都无效,最终无效 同时,CD4532为我们提供了实现方案: //GS:当EI为1,只要有输入端信号有效,输出为1//EO:当EI为1,且所有输入端为0时,输出为1 结合需求和供给的特性,我们这样做: 将CD1的EO1接至CD0的EO0处 GS1接到编码最高位 CD1与CD0的输出端分别接至编码的低三位 设计 仿真 错误 Illegal output or inout port connection for port ‘EO’. 原因&解决方法 用reg型的输出端口对CD4532进行实例化,加载文件报错,修改为wire型的变量进行实例化,initial的过程语句将wire变量值传递至reg输出端口。
verilog仿真——2选1数据选择器
教程 根据慕课平台上提供的教程文档按步骤操作 进行二选一数据选择器的设计与仿真: 一定要搞明白缩写系列:mux为multiplexer的缩写multiplexer:指多路复用器。是从两个或多个源(2的次方)到一单个信道。与数据选择器的概念一致 设计解读 module是定义模块开始的关键词,以endmodule结束 input与output说明端口类型(信号流方向) 端口数据类型默认为wire 线网型:包括wire/wor/supply1/supply0/… 寄存器类型:包括reg/integer/real(time)/time 过程块语句结构包括initial和always两种 过程赋值语句只能给寄存器类型(包含reg)变量赋值,因此有上程序中提到的必须将输出Y设为reg类型 仿真解读 信号类型 输入用reg:保持输入信号不变 输出用wire:随时监测输出信号的变化 时间线 `timescale 1ns/1ns为编译器语句,进行仿真的总设置 initial代表从初始时间0s开始,每个initial语句段平行 #1代表延时1s 交互语句 $stop;停止仿真不退出,可以继续run $finish;退出仿真 $monitor()编译器窗口输出内容 $time执行语句当前时间 结果图