


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、硬件描述语言范例硬件描述语言语言设计实例1、8-3编码器module encode_verilog ( a ,b ); input 7:0 a ; /编码器输入 wire 7:0 a ;output 2:0 b ; 编码器输出 reg 2:0 b;always ( a )begincase ( a ) /編码器某一输入端口为高电平输出 相应的3位二进制数8'b0000_0001 8'b0000_0010 8'b0000_0100 8'b0000_1000 8'b0001_0000 8'b0010_0000 8'b0100_0000 8
2、39;b1000 0000bv=3'b000; 0 bv=3'b001; 1 bv=3'b010; 2 bv=3'b011; 3 bv=3'b100; 4 bv=3'b101; 5 bv=3'b110; 6 bv=3'b111; 7default : bv= 3'b000; /其他情况编码器输 出 3' b000endcase endendmodule2、8-3优先编码器module p_encode_verilog ( A ,I ,GS ,EO ,EI ); II 编码器以低为有效input 7:0 I ; II
3、编码器输入wire 7:0 I ;input El ; 输入使能,EI=0时,编码器正常工 作wire El ;output 2:0 A ; 编码器输出reg 2:0 A ;output GS ; 优先编码器工作状态标志,编码器 的八个输入端有信号输入时,GS=0reg GS ;output EO ; II输出使能, reg EO ;always ( I or El )if ( El ) II使用if、else if表明条件的优先级顺 序beginA <= 3'b111;GS <= 1;EO <= 1;endelse if ( l7 = 0 ) beginA <
4、= 3'b000;GS <= 0;EO <= 1; end else if ( l6 = 0 )beginA <= 3'b001;GS <= 0;EO <= 1;endelse if ( l5 = 0 )beginA <= 3'b010;GS <= 0;EO <= 1;endelse if ( l4 = 0 ) beginA <= 3'b011;GS <= 0;EO <= 1;endelse if ( l3 = 0 ) beginA <= 3'b100;GS <= 0;EO &
5、lt;= 1;endelse if ( l2 = 0 ) beginA <= 3'b101;GS <= 0;EO <= 1;endelse if ( l1 = 0 ) beginA <= 3'b110;GS <= 0;EO <= 1;endelse if ( l0 = 0 )beginA <= 3'b111;GS <= 0;EO <= 1;endelse if ( I = 8'b11111111)beginA <= 3'b111;GS <= 1;EO <= 0;endendmodul
6、e3、3-8译码器module decoder_verilog ( G1 ,Y ,G2 ,A ,G3 );inp ut G1 ; /使能输入,高有效wire G1 ;inp ut G2 ; /使能输入,低有效wire G2 ;input 2:0 A ; /3位译码器输入,为高有效wire 2:0 A ;inp ut G3 ; /使能输入wire G3 ; /使能输入,低有效output 7:0 Y ; 8位译码器输出,为低有效 reg 7:0 Y ;reg s;always ( A ,G1, G2, G3)begins <= G2 | G3 ;if ( G1 = 0) /G1 为低有效Y
7、 <= 8'b1111_1111;else if ( s)Y <= 8'b1111_1111;elsecase ( A )3'b000 : Y<= 8'b1111_1110;3'b001 : Y<= 8'b1111_1101;3'b010 : Y<= 8'b1111_1011;3'b011 : Y<= 8'b1111_0111;3'b100 : Y<= 8'b1110_1111;3'b101 : Y<= 8'b1101_1111;3
8、39;b110 : Y<= 8'b1011_1111;3'b111 : Y<= 8'b0111_1111;endcaseendendmodule4、数据选择器module mux8_1_verilog ( Y ,A ,D0, D1,D2, D3, D4, D5, D6, D7 ,G ); input 2:0 A ; 地址输入端 wire 2:0 A ;inp ut D0 ; /数据输入端inp ut D1 ; /数据输入端inp ut D2 ; /数据输入端inp ut D3 ; /数据输入端inp ut D4 ; /数据输入端inp ut D5 ; /数据
9、输入端inp ut D6 ; /数据输入端inp ut D7 ; /数据输入端 input G ; /使能端,当 G=1时Y=0,当G=0时 数据选择器正常工作wire G ; output Y ; 数据输出端 reg Y ;always (G or A or D0 or D1 or D2 or D3or D4 or D5 or D6 or D7 )beginif (G = 1) /使能端的优先级高Y <= 0;elsecase (A ) /根据输入的地址A确定数据选 择器输出哪路输入数据3'b000 :Y=D0 ;3'b001 :Y=D1 ;3'b010 :Y=
10、D2 ;3'b011 :Y=D3 ;3'b100 :Y=D4 ;3'b101 :Y=D5;3'b110 :Y=D6 ;3'b111 :Y=D7 ;default :Y=0;endcaseendendmodule5、多位数值比较器module compare_verilog ( Y ,A ,B ); input 3:0 A ; /4 位二进制数 A wire 3:0 A ;input 3:0 B ; /4 位二进制数 B wire 3:0 B ;output 2:0 Y ; A与B大小的比较结果reg 2:0 Y ;always ( A or B )beg
11、inif ( A > B )Y <= 3'b001; /A > B 时 Y 输出 3'b001 else if ( A = B)Y <= 3'b010; /A = B 时 Y 输出 3'b010 elseY <= 3'b100; /A < B 时 Y 输出 3'b100 endendmodule6、全加器module sum_verilog ( A ,Co ,B ,S ,Ci);input A ; 输入加数Awire A ;input B ; 输入加数Bwire B ;input Ci ; /相邻低位的进位输入
12、信号wire Ci ;output Co ; 向相邻高位的进位输出信号reg Co ;output S ; /井目加和数输出 reg S ;always ( A or B or Ci)beginif ( A= 0 && B = 0 && Ci = 0 ) beginS <= 0;Co <= 0;endelse if ( A= 1 && B = 0 && Ci = 0 ) beginS <= 1;Co <= 0;endelse if ( A= 0 && B = 1 && Ci
13、= 0 ) beginS <= 1;Co <= 0;endelse if ( A=1 && B = 1 && Ci = 0 ) beginS <= 0;Co <= 1; endelse if ( A= 0 && B = 0 && Ci = 1 ) beginS <= 1;Co <= 0;endelse if ( A= 1 && B = 0 && Ci = 1 ) beginS <= 0;Co <= 1;endelse if ( A= 0 &&a
14、mp; B = 1 && Ci = 1 ) beginS <= 0;Co <= 1;endelsebeginS <= 1;Co <= 1;endendendmodule7、D触发器module Dflipflop ( Q ,CLK ,RESET ,SET ,D ,Qn );input CLK ; /D触发器输入时钟wire CLK ;input RESET ; /D触发器清零输入wire RESET ;input SET ; /D触发器预置数输入wire SET ;input D ; /D触发器输入wire D ;output Q ; /D触发器输出re
15、g Q ;output Qn ;wire Qn ;assign Qn = Q ; /将 D触发器输出取反always ( posedgeCLK or negedgeSET or negedge RESET )beginif ( !RESET) /RESET下降沿将D触发器输出清零Q <= 0 ;else if ( ! SET) /SER下降沿将D触发器输出置1Q <= 1;else Q <= D; /CLK上升沿D触发器输出等于输入endendmodule8、寄存器module reg8 ( clr ,clk ,DOUT ,D );input clr ; /异步清零信号,高有
16、效wire clr ;input clk ; /时钟输入wire clk ;input 7:0 D ; /寄存器数据输入wire 7:0 D ;output 7:0 DOUT ; /寄存器数据输出reg 7:0 DOUT ;always ( posedge clk or posedge clr)beginif ( clr = 1'b1)DOUT <= 0;else DOUT <= D ;endendmodule9、双向移位寄存器module shiftdata ( left_right ,load ,clr ,clk ,DIN ,DOUT );input left_righ
17、t ; /左移右移控制信号wire left_right ;input load ; 异步置数信号,有效时将DIN输入 wire load ;input clr ; /异步清零信号,高有效wire clr ;input clk ; /时钟输入wire clk ;input 3:0 DIN ; / 并行输入wire 3:0 DIN ;output 3:0 DOUT ; 并行输出wire 3:0 DOUT ;/ DOUT 是一个 wire 型变量,不能在always块中被赋值reg 3:0 data_r; 所以定义一个寄存器型变量 data作为中间变量assign DOUT = data_r ;a
18、lways ( posedge clk or posedge clror posedge load ) beginif ( clr = 1)/异步清零data<=0;else if (load ) /异步置数data<=DIN;else beginif ( left_right) left_right=1,信号左移 begindata<=(data_r<<1);data_r0 <= 0;移出位补 0endelse begin left_right=0,信号右移 data<=(data_r>>1); data_r3 <= 0;移出位补
19、0endendend endmodule10、4位二进制加减法计数器module counter4 ( load ,clr ,c ,DOUT ,clk, up_down ,DIN);input load ; /异步预置数input clk; /输入时钟wire load ;input clr ;异步清零wire clr ;input up_down ; 加减计数,up_dpwn=1 力口计 数,up_down=0减计数wire up_down ;input 3:0 DIN ; / 预置数输入wire 3:0 DIN ;output c ; /进位/借位输出,可以用于计数器的级 联reg c ;
20、output 3:0 DOUT ; / 计数输出wire 3:0 DOUT ;reg3:0 data;assign DOUT = data_r; always ( posedge clk or posedge clr or posedge load) beginif ( clr = 1)/异步清零data_r <= 0;else if ( load = 1)II 异步预置data=DIN;else begin if ( up_down =1)加计数 beginif ( data=4'b1111) begin data=4'b0000;c = 1;endelse begin
21、data=data+1; c = 0 ;endendelse /减计数beginif ( data_r = 4'b0000) begin data_r = 4'b1111;c = 1;endelse begindata_r = data_r -1;c = 0 ;endendendendendmodule11、十进制加减法计数器module counterlO (load ,clr ,c ,DOUT ,clk, up_down ,DIN ,seven_seg);input load ; 异步预置数input clk; 输入时钟 wire load ;input clr ; /异步
22、清零wire clr ;input up_down ; / 加减计数,up_dpwn=1 力口计 数,up_down=0减计数wire up_down ;input 3:0 DIN ; II 预置数输入wire 3:0 DIN ;output c ; /进位I借位输出,可以用于计数器的级 联reg c ;output 3:0 DOUT ; II 计数输出output 7:0 seven_seg; 段数码管wire 3:0 DOUT ;reg 3:0 data; assign DOUT = data_r; always ( posedge elk or posedge clr or posedg
23、e load) beginif ( elr = 1)异步清零data_r <= 0;else if ( load = 1) /异步预置 data_r <= DIN;else if ( up_down =1 & data_r = 9) /加进位 begine = 1;data_r <= 4'b0000;endelse if ( up_down =0 & data_r = 0) /减借位 begine = 1;data_r <= 9;endelsebeginif (up_down =1) begin /加计数data=data+1;c = 0 ;en
24、delse begin减计数data=data-1 ;c = 0 ;endendend assign seven_seg =Y_r;码管 *reg 7:0 Y_r;always (data_r ) /用7段数码管显示计数 输出beginY_r =8'b11111111;case (data_r )4'b0000: Y_r = 8'b00000011; 显示 04'b0001: Y_r = 8'b10011111; /显示 14'b0010: Y_r = 8'b00100101; 显示 24'b0011: Y_r = 8'b
25、00001101; 显示 34'b0100: Y_r = 8'b10011001; 显示 44'b0101: Y_r = 8'bO1001001; 显示 54'b0110: Y_r = 8'b01000001; 显示 64'b0111: Y_r = 8'b00011111; /显示 74'b1000: Y_r = 8'b00000001; 显示 84'b1001: Y_r = 8'b00001001; 显示 9 default: Y_r = 8'b11111111; 默认数码管 不发光end
26、caseend endmodule12、顺序脉冲发生器module pulsegen ( Q ,clr ,clk);inp ut clr ; /异步预置数wire clr ;input clk ; /时钟输入wire clk ;output 7:0 Q ;/顺序脉冲输出wire 7:0 Q ;reg 7:0 temp ;reg x;assign Q =temp;always ( posedge elk or posedge clr ) beginif ( clr=1)begintemp <= 8'b00000001; /temp 寄存预定的 序列x= 0 ;endelsebegi
27、nx<= temp7; 序列最高位输出 temp <= temp<<1 ; /temp 左移一位 temp0 <=x; /将输出的结果赋给序列最 低位,实现序列的循环输出endendendmodule13、序列信号发生器module xlgen ( Q ,clk ,res); input clk ; /时钟输入 wire clk ;input res ; 异步预置数wire res ;output Q ; /序列信号输出reg Q ;reg 7:0 Q_r ;always ( posedge elk or posedge res)beginif (res =1)beginQ <= 1'b0;Q_r <= 8'b11100100;/Q_r 寄存预定的序列end elsebeginQ <= Q_r7; /序列最高位输出 Q_r <= Q_r<<1; /Q_r 左移一位Q_r0 <=Q; 将输出的结果赋给序列最低位,实现序列的循环输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电力备用资源优化配置补充合同
- 家庭保险受益人变更及保险责任调整合同
- 《智慧养老的康复之路》课件
- 魔法肥皂实验室:亲子科学手工皂DIY活动
- 萧宗六学校管理理论体系与实践创新
- 医学个人年度总结
- 《癌症整合治疗》课件
- 《急性敌敌畏中毒》课件
- 男性睾丸医学科普
- 《T知识讲解教程》课件
- 2025年河北廊坊市大厂回族自治县财信城市建设投资集团招聘笔试参考题库附带答案详解
- 2022年河北农业大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)
- 2025届中考英语二轮复习常考题型专练:完形填空(含解析)
- 【MOOC】跨文化交际通识通论-扬州大学 中国大学慕课MOOC答案
- 2024年贵州省贵阳市中考地理试卷(附答案)
- 大脑健康课件
- 上海市2024年中考化学真题(含答案)
- 浙江大学《概率论与数理统计》第7章
- 光伏发电工程总承包合同
- 国开(陕西)2024年秋《社会调查》形考作业1-4
- 立式水轮发电机检修技术规程宣贯课件
评论
0/150
提交评论