可编程资料讲解Word格式.docx

上传人:b****2 文档编号:608211 上传时间:2023-04-29 格式:DOCX 页数:36 大小:177.26KB
下载 相关 举报
可编程资料讲解Word格式.docx_第1页
第1页 / 共36页
可编程资料讲解Word格式.docx_第2页
第2页 / 共36页
可编程资料讲解Word格式.docx_第3页
第3页 / 共36页
可编程资料讲解Word格式.docx_第4页
第4页 / 共36页
可编程资料讲解Word格式.docx_第5页
第5页 / 共36页
可编程资料讲解Word格式.docx_第6页
第6页 / 共36页
可编程资料讲解Word格式.docx_第7页
第7页 / 共36页
可编程资料讲解Word格式.docx_第8页
第8页 / 共36页
可编程资料讲解Word格式.docx_第9页
第9页 / 共36页
可编程资料讲解Word格式.docx_第10页
第10页 / 共36页
可编程资料讲解Word格式.docx_第11页
第11页 / 共36页
可编程资料讲解Word格式.docx_第12页
第12页 / 共36页
可编程资料讲解Word格式.docx_第13页
第13页 / 共36页
可编程资料讲解Word格式.docx_第14页
第14页 / 共36页
可编程资料讲解Word格式.docx_第15页
第15页 / 共36页
可编程资料讲解Word格式.docx_第16页
第16页 / 共36页
可编程资料讲解Word格式.docx_第17页
第17页 / 共36页
可编程资料讲解Word格式.docx_第18页
第18页 / 共36页
可编程资料讲解Word格式.docx_第19页
第19页 / 共36页
可编程资料讲解Word格式.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

可编程资料讲解Word格式.docx

《可编程资料讲解Word格式.docx》由会员分享,可在线阅读,更多相关《可编程资料讲解Word格式.docx(36页珍藏版)》请在冰点文库上搜索。

可编程资料讲解Word格式.docx

以上情况已经可以完全模拟电路的工作情况,如果仿真正确,当且仅当A=B=C=D=0的时刻,LED_OUT=0,BUZ_OUT=0,灯灭,蜂鸣器不响;

其它情况LED_OUT和BUZ_OUT均为1。

9.异步复位同步复位

Always@(posedgeclk)posedge上升沿negedge下降沿同步异步看posedge同步短

If(rstn==1’b0)

指定同步复位时,always的敏感表中仅有时钟沿信号,仅仅当时钟沿采到同步复位的有效电平时,才会在时钟沿到达时刻进行复位操作。

指定异步复位时,只需always的敏感表中加入复位信号的有效沿即可,当复位信号有效沿到达时,无论时钟沿是否有效,复位都会立即发挥其功能。

10.长信号赋值给短信号

例子

A=8’b10010011

B=3’b001

B<

=A

B=011(取后几位)

Reg[19:

0]A

Reg[9:

0]B

=A,A的低位给B

大题

1.表决器7人(不要用卡罗图)5人3个控制端

两种方法

五人表决器

方法一:

数据流

module5get1(b1,b2,b3,b4,b5,u);

inputb1,b2,b3,b4,b5;

outputu;

wire[2:

0]add_result;

assignadd_result=b1+b2+b3+b4+b5;

assignu=add_result>

=3?

1'

b1:

1'

b0;

endmodule

七人表决器

方法一

Input[6:

0]In;

Ouputu;

Always@(in)

If(in[6]+in[5]….+in[0]>

4)

u=1;

b1

Else

Out=1’b0

方法二

Case(In[0]+In[1]+……+In[6])

3’d4:

u=1’b1;

3’d5:

Default:

u=0;

Endcase;

2.多路选择器(5选1)

4选1数据选择器

⏹regF;

⏹always@(P0orP1orP2orP3orS)

⏹begin

⏹case(S)//用case语句进行选择

⏹2’b00:

F=P0;

//S1S0=00时选择输出数据P0

⏹2’b01:

F=P1;

//S1S0=01时选择输出数据P1

⏹2’b10:

F=P2;

//S1S0=10时选择输出数据P2

⏹2’b11:

F=P3;

//S1S0=11时选择输出数据P3

⏹endcase

⏹end

⏹endmodule

2位二进制数据比较器

modulea1(A,B,EQ,LG,SM);

input[1:

0]A,B;

outputEQ,LG,SM;

regEQ,LG,SM;

always@(AorB)

beginif(A==B)

beginEQ=(A==B)?

LG=1'

SM=1'

end

elseif(A>

B)

beginEQ=1'

LG=(A>

B)?

else

SM=(A<

end

3触发器(置位,复位,上升沿,下降沿)

有圆圈是下降沿negedge升沿posedge

给图写代码

 

4.分频器

分频系数=原频率/目标频率=19.44MHZ/8KHZ=2430

最大计数为分频系数的一半(高低电平各一半)即1215 

=10011100010B,因此二进制计数器的位数为11。

先弄分频系数直接除2430怎么知道多少位参考点2^10=1024;

2^11=2048;

2^12=4096;

2^13=8192

解答

⏹always@(posedgeclk)

⏹if(cnt==1214)

⏹cnt<

=0;

⏹elsecnt<

=cnt+1;

⏹clkout<

=~clkout;

⏹elseclkout<

=1'

0.01s分频器(1s为25000000)

modulem_divider(sys_clk,div_clk);

inputsys_clk;

outputdiv_clk;

reg[26:

0]counter;

regdiv_clk;

always@(posedgesys_clk)

if(counter==27'

d2500000000)

begin

counter<

=27'

div_clk<

=~div_clk;

end

else

=counter+1'

b1;

endmodule

分频器与计数器的配合0-9

模块一:

分频

modulefenpin25(clk,rst,clk_1hz);

inputclk;

inputrst;

outputclk_1hz;

regclk_1hz;

reg[24:

0]cnt;

always@(posedgeclkornegedgerst)

if(rst==1'

b0)

cnt<

=25'

d0;

elseif(cnt==25'

d25000000)

clk_1hz<

=~clk_1hz;

else

模块二:

modulecnt74160(clk,rst,en,load,data,dout,cout);

inputclk,rst,en,load;

input[3:

0]data;

output[3:

0]dout;

outputcout;

reg[3:

0]q1;

regcout;

assigndout=q1;

always@(posedgeclkornegedgerst)

begin

if(!

rst)

q1<

elseif(en)

if(!

load)

=data;

elseif(q1<

9)

=q1+1;

else

=4'

b0000;

always@(q1)

if(q1==4'

h9)

cout=1'

elsecout=1'

模块三:

moduleqiduan(cnt,led,scan);

input[3:

0]cnt;

output[6:

0]led;

output[3:

0]scan;

reg[6:

wire[3:

assignscan=4'

b0001;

always@(cnt)

begin

case(cnt)

4'

b0001:

led=7'

b0000110;

b0010:

b1011011;

b0011:

b1001111;

b0100:

b1100110;

b0101:

b1101101;

b0110:

b1111100;

b0111:

b0000111;

b1000:

b1111111;

b1001:

b1101111;

b1010:

b1110111;

default:

b0111111;

endcase

顶层模块:

modulecount_160(clk,rst,en,load,data,cout,scan,led);

inputclk,rst,en,load;

wire[6:

fenpin25u0(clk,rst,clk_1hz);

cnt74160u1(clk_1hz,rst,en,load,data,cnt,cout);

qiduanu2(cnt,led,scan);

方法二:

modulesysclk(reset,sys_clk,clk_1hz);

inputreset;

reg[24:

0]cnt25m;

always@(posedgesys_clk)

if(reset==1'

b1)

cnt25m<

elseif(cnt25m==25'

begin

cnt25m<

clk_1hz<

cnt25m<

=cnt25m+1'

modulecnt_10(reset,clk,cnt);

inputclk,reset;

always@(posedgeclkorposedgereset)

elseif(cnt==4'

d9)

endmodule

moduleymxs(cnt,scan,data_out,);

input[3:

output[7:

0]data_out;

output[3:

0]scan;

assignscan=4'

reg[7:

0]data_out;

wire[3:

always@(cnt)

begin

case(cnt)

4'

b0000:

data_out<

=8'

b00111111;

b0001:

b00000110;

b0010:

b01011011;

b0011:

b01001111;

b0100:

b01100110;

b0101:

b01101101;

b0110:

b01111101;

b0111:

b00000111;

b1000:

b01111111;

b1001:

b01101111;

default:

b00000000;

endcase

顶层模块

moduletotal(reset,sys_clk,data_out,scan);

output[7:

wireclk_1hz;

sysclkU1(reset,sys_clk,clk_1hz);

cnt_10U2(reset,clk_1hz,cnt);

ymxsU3(cnt,scan,data_out);

占空比为1:

15的分频电路设计

moduleclk_15_1(clk,rst,clk_div);

inputclk,rst;

outputclk_div;

regclk_div;

reg[3:

always@(posedgeclkorposedgerst)

if(rst==1'

b1)cnt<

elsecnt<

end

always@(posedgeclkorposedgerst)

b1)clk_div<

d15)clk_div<

elseclk_div<

占空比为10:

6的波形设计和仿真

moduleclk_10_6(clk,rst,clk_div);

elseif(cnt>

d10)clk_div<

移位寄存器

1.并入串出

modulemyshift_3(din,clk,rst,load,dout);

inputclk,rst,load;

0]din;

outputdout;

regdout;

0]q;

dout<

elseif(load==1'

q<

=din;

=q<

<

1;

q[0]<

=q[3];

2.串入并出

modulemyshift_2(din,clk,rst,dout);

inputdin,clk,rst;

0]dout;

always@(posedgeclkornegedgerst)

else

dout={dout[2:

0],din};

end

3.串入串出

moduleshift_1(din,clk,dout);

inputdin,clk;

outputdout;

regdout;

regtmp1,tmp2,tmp3,tmp4,tmp5,tmp6,tmp7;

always@(posedgeclk)

tmp1<

tmp2<

=tmp1;

tmp3<

=tmp2;

tmp4<

=tmp3;

tmp5<

=tmp4;

tmp6<

=tmp5;

tmp7<

=tmp6;

=tmp7;

循环移位寄存器设计

⏹moduleshift_4(clk,rst,din,dout);

⏹inputclk,rst;

⏹input[3:

0]din;

⏹output[3:

⏹reg[3:

⏹always@(posedgeclkorposedgerst)

⏹if(rst==1'

⏹dout<

⏹elsebegin

⏹dout[3:

1]<

=dout[2:

0];

⏹dout[0]<

=dout[3];

⏹end

流水灯循环移位点亮

模块一

moduleshift_8(clk_2,rst,din,dout);

inputclk_2,rst;

input[3:

output[7:

always@(posedgeclk_2orposedgerst)

begin

if(rst==1'

dout<

else

begin

dout[7:

=dout[6:

dout[0]<

=dout[7];

end

end

modulefenpin(rst,clk,clk_1hz);

inputrst,clk;

0]counter;

always@(posedgeclkorposedgerst)

if(rst==1)

counter<

elseif(counter==25'

modulezong(rst,clk,din,dout);

inputrst,clk;

output[7:

fenpinU1(rst,clk,clk_1hz);

shift_8U2(clk_1hz,rst,din,dout);

数码管段轮流点亮

outputclk_1hz;

regclk_1hz;

reg[24:

if(rst==1)

counter<

elseif(counter==25'

counter<

end

moduleshift_8(clk_2,rst,din,scan,dout);

assignscan=4'

modulezong(rst,clk,din,scan,dout);

shift_8U2(clk_1hz,rst,din,scan,dout);

时钟

moduledigc_0379(sys_clk,reset,pause,scan,data_out);

inputsys_clk,reset,pause;

reg[2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2