Verilog的135个经典设计实例.pdf

上传人:飞****9 文档编号:134197191 上传时间:2020-06-03 格式:PDF 页数:83 大小:7.32MB
返回 下载 相关 举报
Verilog的135个经典设计实例.pdf_第1页
第1页 / 共83页
Verilog的135个经典设计实例.pdf_第2页
第2页 / 共83页
Verilog的135个经典设计实例.pdf_第3页
第3页 / 共83页
Verilog的135个经典设计实例.pdf_第4页
第4页 / 共83页
Verilog的135个经典设计实例.pdf_第5页
第5页 / 共83页
点击查看更多>>
资源描述

《Verilog的135个经典设计实例.pdf》由会员分享,可在线阅读,更多相关《Verilog的135个经典设计实例.pdf(83页珍藏版)》请在金锄头文库上搜索。

1、 19 3 1 4位全加器 王金明 VerilogHDL程序设计教程 m duleadder4 cout sum ina inb cin utput 3 0 sum utputcout input 3 0 ina inb input cin assign cout sum ina i nb ci n endm dule 例3 2 4位计数器 m dulecount4 out reset c l k utput 3 0 ut input reset clk reg 3 0 out always p sedgeelk begin if reset out O else out out l end

2、endm dule 19 3 3 4位全加器的仿真程序 timescalelns lns include adder4 v P J r b e da a1J nu e 1 3 u fL dq e mx reg cin wire 3 0 sum wire cout integer i j 同步复位 计数 测试模块的名字 测试输入信号定义为reg型 测试输出信号定义为wire型 always 5 cin c i n adder 4 adder sum cout a b c i n 调用测试对象 设定cin的取值 initial begin a O b O c i n O f r i l i 1 6

3、 i i l 10 a i end 设定a的取值 1 程序文本 initial l Id J rb 咱i 1J 气 UF LA n i qz o e 1 4 hUSE A甘 设定b的取值 end initial 定义结果显示格式 begin monitor time 毛d 毛d 毛b 告b 毛d a b cin cout sum 160 finish end endm dule 19 3 4 4位计数器的仿真程序 timescalelns lns include count 4 v p t 一t 4 e ns ue or c b h e l l c u dq e mx 测试输入信号定义为reg

4、型 测试输出信号定义为wire型wire 3 0 out parameter DELY lOO count4 mycount out reset c l k 调用测试对象 always DELY 2 elk e l k 产生时钟波形 initial begin 激励信号定义 DELY DELY elk 0 reset O reset l reset O DELY女20 finish end 定义结果显示格式 initial monitor time elk 毛dreset 屯dout 毛d elk reset out endm dule 侣 3 5 与 或 非 门电路 utputF 模块名为A

5、OI 端口歹lj表A B C D F 模块的输入端口为A B C D 模块的输出端口为F m duleAOI A B C D F input A B C D 2 王金明 VerilogHDL程序设计教程 wire A B C D F 定义信号的数据类型 assign F A 逻辑功能描述 endm dule 19 5 1 用case语旬描述的4选1数据选择器 m dulemux4 l out in0 inl in2 in3 sel utputout input in0 inl in2 in3 input l O sel reg out always inO zinl zin2 zin3 zse

6、l case sel 2 bOO out inO 2 bOl out inl 2 blO out i口2 2 bll out in3 default out 2 bx endcase endm dule 19 5 2 同步置数 同步清零的计数器 m dulecount out data load reset clk utput 7 0 out input 7 0 data input load cl k r eset reg 7 OJ out always p sedgeelk begin if reset out 8 hOO else if load out data else out ou

7、t 1 end endm dule 敏感信号列表 elk上升沿触发 同步清0 低电平有效 同步预置 计数 19 5 3 用always过程语旬描述的简单算术逻辑单元 defineadd 3 dO defineminus 3 dl defineband 3 d2 definebor 3 d3 definebnot 3 d4 3 程序文本 m dulealu out opcode a b utput 7 0 out reg 7 0 out input 2 0 opcode input 7 0 a b always opcode xa zb begin case opcode add out a b

8、 minus out a b band out a bor out a lb bnot out 呻a default out 8 hx endcase end endm dule 操作码 操作数 电平敏感的always块 加操作 减操作 求与 求或 求反 未收到指令时 输出任意态 19 5 4 用initial过程语旬对测试变量A B C赋值 timescalelns lns m dulet est reg A B C initial begin A O B l C O 50 A l B O 50 A O c l 50 B l 50 B O C O 50 finish end endmodul

9、e timescalelOns lns 例5 5 用be伊1 end串行块产生信号波形 m dulewave l reg wave nu 牛 e 4 c y c r e 咽 ea m at z l an pi begin 4 王金明 VerilogHDL程序设计教程 wave O cycle 2 wave l cycle 2 wave O cycle 2 wave l cycle 2 wave O cycle 2 wave l cycle 2 finish end initial monitor time wave 告b wave endm dule 自 19 5 6 用fork才oin并行块

10、产生信号波形 timescalelOns lns m dulewave2 reg wave R J e 1 4 C V4 c z e 唱 ea m L at r an pi f rk wave O cycle wave l 2 cycle wave O 3 cycle wave l 4 cycle wave O S cycle wave l 6 cycle finish 3 in initial monitor time wave 每b wave endm dule 例5 7 持续赋值方式定义的2选l多路选择器 m duleM UX21 1 out a b sel input a b sel

11、utputout assign out sel O a b 持续赋值 如果sel为0 贝I out a 否则out b endmodule 19 5 8 阻塞赋值方式定义的2选l多路选择器 m duleM UX21 2 out a b sel input a b sel 5 程序文本 utputout reg out always a zb zsel begin if sel O out a 阻塞赋值 else out b end endmodule 侣 5 9 非阻塞赋值 m dulenon block c b a c lk utputc b input c l k a reg c b al

12、ways p sedgeelk begin b a c b end endm dule 19 5 10 阻塞赋值 m duleb lock c b a clk utputc b input cl k a reg c b always p sedgeelk begin e 问 L的 d U nd bc e 伽 n e 侣 5 11 模为60的BCD码加法计数器 m dulecount60 qout cout data load c i n reset clk utput 7 0 qout utputcout input 7 0 dat a input load cin c l k reset r

13、eg 7 0 qout always p sedgeelk elk上升沿时刻计数 6 王金明 VerilogHDL程序设计教程 begin if reset else if load else if cin begin qout O qout data 同步复位 同步置数 if qout 3 0 9 低位是否为9 是则 begin qout 3 0 0 囡0 并判断高位是否为5 if qout 7 4 5 qout 7 4 0 else qout 7 4 qout 7 4 1 end else qout 3 0 qout 3 0 1 end end assign cout qout 8 h59

14、 endm dule 例5 12 BCD码一七段数码管显示译码器 m duledecode4 7 decodeout indec utput 6 0 decodeout input 3 0 indec reg 6 0 decodeout always indec begin case indec 4 dO decodeout 7 bllllll O 4 dl decodeout 7 bOllOOOO 4 d2 decodeout 7 b1101101 4 d3 decodeout 7 b llllOOl 4 d4 decodeout 7 b0110011 4 d5 decodeout 7 b1

15、011011 4 d6 decodeout 7 b lOlllll 4 d7 decodeout 7 blllOOOO 4 d8 decodeout 7 b lllllll 4 d9 decodeout 7 b llllOll default decodeout 7 bx endcase end 高位不为5 则加l 低位不为9 则加l 产生进位输出信号 用case语句进行译码 7 程序文本 8 endm dule 侣 5 13 用casez描述的数据选择器 m dulemux casez out a b c d select utputout input a b c d input 3 0 s

16、elect reg out always select za zb zc zd begin casez select end 4 b l out a 4 b l out b 4 b l out c 4 b l out d endcase endm dule 例5 14 隐含锁存器举例 m duleburied ff c b a utputc input b a reg c always a orb begin if b l end endm dule 19 5 15 用for语旬描述的七人投票表决器 m dulevoter7 pass vote utputpass input 6 0 vot e reg 2 0 sum integer i reg pass always vote begin sum O f r i O i 6 i i l if vote i sum sum l if sum 2 pass l 王金明 VerilogHDL程序设计教程 for语旬 若超过4人赞成 则pass l else pass O end endm dule 19 5 16 用for语旬实现2个8位

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 管理论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号