EDA(初级建模)_第1页
EDA(初级建模)_第2页
EDA(初级建模)_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、初级建模实例1. 上升沿D触发器dataelkqdataj数据输入端,clkj时钟输入端,q足输出端。module dff data, elk, q; in put data, elk; output q ;always posedge elk! q=data;en dmodule2. 带异步复位端的上升沿触发器reset是异步复位端,当reset变成0时就执行复位,而不管当前时钟 信号如何,即复位行为与时钟不是同步的,所以称为异步复位。module dff_1 ( data, elk, reset, q ); in put data, elk, reset;output q;reg q;al

2、ways ( posedge elk or n egedge reset)if (!reset) q=1' b0;elseq=data;en dmodule3. 带异步置数端的上升沿触发器preset是异步置数端,当preset变为0时,输出q置为1module dff_2 ( data, elk, preset, q );in put data, elk, preset;output q;reg q;always ( posedge elk or n egedge preset)if (!preset)q=1' b1;elseq=data;en dmodule4. 带同步复位

3、端的上升沿D触发器(reset是同步复位端)module dff_3 ( data, elk, reset, q );in put data, elk, reset;output q;reg q;always ( posedge elk )if (!reset)q=1' bO;elseq=data;en dmodule5. 带异步复位端和使能端的上升沿 D触发器en是使能端,当en咼电平有效时,才能输出数据。module dff_3 ( data, elk, reset, en, q );in put data, elk, reset, en;output q;reg q;always

4、 ( posedge elk or n egedge reset )if (!reset)q=1' bO;elsebeg inif (en) q=data; else q=0;enden dmodule6. 带异步复位和异步置数的上升沿 D触发器module dff_1 ( data, elk, reset, preset, q);in put data, elk, reset, preset;output q;reg q;always ( posedge elk or n egedge reset or posedge preset) if (! reset )presetelse

5、if ( ! preset )dataelkelseq=data;en dmodule二、锁存器1.带使能端的锁存器锁存器有一个数据输入端data,数据输出端q和一个使能端enable 当使能端enable有效时,才能把数据输入到锁存器中。module d_latch ( en able, data, q);in put data, en able;output q;reg q;always ( en able or data )if ( en able ) y=data;en dmodule2.带异步复位端的锁存器module d_latch ( data, en, reset, q);in

6、 put data, en, reset;output q;reg q;always ( data or en or reset ) if (! reset )q=1' bO;elsebeg inif (en)q=data;enden dmodule二、编码器1. 8-3编码器in7in0是8位数据输入端,out2out0是3位编码输出端。输入端每次有且只有一个是有效的module en coder (i n, out)1ln7_ln6 ln5学习文档 ln3 ln2 ln1 lnOJ .Out2Out1Out0In put 7:0 in; output 2:0 out;reg 2:0

7、 out;always (in)case (in)8' b00000001:out=38' b00000010: out=38' b00000100: out=38' b00001000: out=38' b00010000: out=38' b00100000: out=38' b01000000: out=3110;8' b10000000: out=3 ' endcase'b000; in0为1时输出编码000 'b001; /in1为1时输出编码001 'b010; /in2为1时输出编码0

8、10 'b011; in3为1时输出编码011b100; /in4为1时输出编码100b101; in5为1时输出编码101 b /in6为1时输出编码110b111; in7为1时输出编码111en dmoduleill 2 in1l in0) enout7 out6 out5 out 4 out3 outp out1 QUt0四、译码器1.3-8译码器in2in0是3位数据输入端, out7out0是8位译码输出端。输出 端每次有且只有一个是有效的“ 1。en是使能端module decoder ( in, out, en );in put en;in put 2:0 in;out

9、put 7:0 out;reg 7:0 out;always ( en or in) beg in if ( en )out=8 ' b0;elsecase( in )b000000/0;b000000/0;b000001/0;b000010/0;3' b000: out=83' b001: out=83' b010: out=83' b011: out=83' b100: out=8bOOO1OO00;3' b101: out=8b001000OO;3' b110: out=8bO10000O6;3' bill: out

10、=8b100000/0;endouten dmodule五、4选1多路数据选择器c、d、e、f是4个数据输入端,out ; 是数据输出端,s是选择信号输入端。分别采用if-else构造和case构造用if-else构造module mux c,d,e,f,s,outin put c,d,e,f;in put 1:0 s;output out;reg out;always (c or d or e or f or s) begi n/s是00时选通c/s是01时选通d/s是10时选通e/s是其他值时选通fif (s=2' bOO)out=c;else if (s=2' b01)o

11、ut=d;else if (s=2' b10)out=e;elseout=f;enden dmodule用case构造module mux c,d,e,f,s,outin put c,d,e,f;in put 1:0 s;output out;reg out;always (c or d or e or f or s) begi ncase (s)2' bOO : out二c;00 时选通 c2' bO1 : out=d;1101 时选通 d2' b10 : out=e;10 时选通 edefault : out=f;/其他值时选通fendcaseenden d

12、module六、计数器dintload dataresetelk1. 带使能和进位输出的4位加法计数器 d是4位置数输入端,int是加法计数使能端, load_data是置数使能端,reset是复位端, clk是时钟输入端。q是4位输出端,cout是进位输出端。该4位加法计数器的模是16。module coun ter4_bit (q, cout, d, int, load_data, reset, clk);output 3:0 q;output cout;in put 3:0 d;in put in t, load_data, reset, clk;else if (int) if (q=

13、15) begin q=0; cout=1;end else begin q=q+1: cout=0;end endmodulereg 3:0 q;reg cout;always (posedge clk)if (reset) beg in q=4' b0000;cout=0;endelse if (load_data) beg in q=d; cout=0;end2. 4分频module div (clk_in, clk_out, reset);_parameter bitsize=2;J : ;、: i ,.学习文档仅供参考可得到任意整数倍分频。例 如5分频,令参数X4.bi ts

14、ize-3parameter L=3;in put clk_i n, reset; output clk_out;reg bitsize:1 count;reg clk_out;always (posedge clk_i n)beg inif (!reset)coun t=0;elsebeg inif(co un t<L)coun t=co un t+1;elsecoun t=0;endclk_out=co un tbitsize;enden dmodule七、加法器1. 半加器2. a和b是两个1位二进制数输入端,sum是相加结果,c是进位输出。3&用行为描述的方法:modul

15、e half_adder ( a, b, sum, c );in put a, b;output sum,c;assig n sum=aAb;assig n c=a&b;en dmodule用结构描述的方法:module half_adder ( a, b, sum, c );in put a, b;output sum,c;xor n1 (sum, a, b);and n2 ( c, a, b );en dmodule2. 全加器 cin是进位输入module half_adder ( a, b, cin, sum, c ); in put a, b, cin; output sum

16、,c;sumbreg sum, c;reg t1, t2, t3;always ( a or b or cin) begi nsum=(aAb)Ac in;t1=a&cin;t2=b&cin; t3=a&b;c=( t1|t2 )|t3;enden dmodule4位串行进位加法器 全加器模块:module adder ( a, b, cin, sum, c );in put a, b, cin; output sum,c;reg sum, c;always ( a or b or cin) begi nsum=(aAbFc in; c=a&b+a&ci

17、n+b&cin;enden dmodulemodule adder4_bit ( a, b, cin, sum, cout ); in put 3:0 a,b;in put cin;output 3:0 sum;output cout;wire 2:0 c;/实例化4个1位全加器,并用c串连起来 adder n0 ( a0,b0,c,sum0,c0); adder n1 ( a1,b1,c0,sum1,c1); adder n2 ( a2,b2,c1,sum2,c2); adder n3 ( a3,b3,c2,sum3,cout);endmodule3. 8-3 优先编码器moduel coder8-3 ( in, out, en ) input 7:0 in;input en;output 2:0 out;reg 2:0 out;always ( in,en )if (! en ) out=3 ' b0;casex (in)8' b0000000 1 : out=38' b000000 1 x: out=38' b000001xx: out=38' b00001xxx: out=38' b0001xx

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论