可编程资料概览.docx

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

可编程资料概览.docx

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

可编程资料概览.docx

可编程资料概览

大题全部写代码

1.标识符

value标识符格式reg,数字不能开头变量,可以%_$其他的不可以,关键词regor不行,内部有的

2.阻塞非阻塞赋值=立即赋值,<=延时,例子

a=b=ca=1b=ac=ba=c=b=1

a<=1b<=ac<=ba=1b=0c=0

阻塞赋值和非阻塞赋值的基本区别是:

阻塞赋值是顺序执行语句,而非阻塞赋值是并行执行语句。

3.{}拼接运算符作用:

不同的数拼在一起

例子:

A=3’b101B=6’b101101问{A,B[3:

1]}=6’b101110

记得数数是从0开始的,A全部,B的1到3

位宽不够高位补0;位宽过剩裁去高位

1s=10^3ms=10^6us=10^9ns=10^12ps

4.BCD码--B二进制D十进制O八进制H十六进制

2个十六进制为1个字节,8个二进制数为1个字节

例子(13)10=(00010011)BCD考试可能问(13)8=(?

)BCD

转换见书本目录页

5.属于可编程逻辑器件FPGACPLDEPLDARMC51X86不是

Assign对应wire

Always对应reg

6.注解行注解//段注解/*SDSJDKJDSLKDL*/

7.%叫做取余数13%5=3

/叫做整除13/5=2

8.ModelSim仿真工具,用代码生成波形,例子

Always

Begin

#10clk=0;(#叫做延迟时间单位,单位时间是timescale10ns/100ps,表示1单位时间=10ns,100ps代表精度,这句意思过了100ns后clk=0(clk前200ns是0)又过100nsclk取反)’

#10clk=~clk;

End200NS100NS100NS100NS

Clk

占空比高电平比整个周期1/2

这段测试代码的意思是:

以ps为单位,0时刻是,A=B=C=D=1,表示四个安全带均没有系上,然后过了10ps,B=0,代表这个安全带系上了;再过了10ps,A=0,代表另一个安全带系上了;再过了10ps,D=0,代表另一个安全带系上了;再过了10ps,C=0,最后一个安全带系上了。

然后再过10ps,B=1,这个安全带松开了。

最后再过20ps,测试结束。

以上情况已经可以完全模拟电路的工作情况,如果仿真正确,当且仅当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

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:

u=1’b1;

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)?

1'b1:

1'b0;LG=1'b0;SM=1'b0;

end

elseif(A>B)

beginEQ=1'b0;LG=(A>B)?

1'b1:

1'b0;SM=1'b0;

end

else

beginEQ=1'b0;LG=1'b0;SM=(A

1'b1:

1'b0;

end

end

endmodule

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)

⏹begin

⏹if(cnt==1214)

⏹cnt<=0;

⏹elsecnt<=cnt+1;

⏹end

⏹always@(posedgeclk)

⏹begin

⏹if(cnt==1214)

⏹clkout<=~clkout;

⏹elseclkout<=1'b0;

⏹end

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'b0;

div_clk<=~div_clk;

end

else

counter<=counter+1'b1;

endmodule

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

方法一

模块一:

分频

modulefenpin25(clk,rst,clk_1hz);

inputclk;

inputrst;

outputclk_1hz;

regclk_1hz;

reg[24:

0]cnt;

always@(posedgeclkornegedgerst)

begin

if(rst==1'b0)

cnt<=25'd0;

elseif(cnt==25'd25000000)

begin

cnt<=25'd0;

clk_1hz<=~clk_1hz;

end

else

cnt<=cnt+1;

end

endmodule

模块二:

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<=0;

elseif(en)

begin

if(!

load)

q1<=data;

elseif(q1<9)

q1<=q1+1;

else

q1<=4'b0000;

end

end

always@(q1)

begin

if(q1==4'h9)

cout=1'b1;

elsecout=1'b0;

end

endmodule

模块三:

moduleqiduan(cnt,led,scan);

input[3:

0]cnt;

output[6:

0]led;

output[3:

0]scan;

reg[6:

0]led;

wire[3:

0]scan;

assignscan=4'b0001;

always@(cnt)

begin

case(cnt)

4'b0001:

led=7'b0000110;

4'b0010:

led=7'b1011011;

4'b0011:

led=7'b1001111;

4'b0100:

led=7'b1100110;

4'b0101:

led=7'b1101101;

4'b0110:

led=7'b1111100;

4'b0111:

led=7'b0000111;

4'b1000:

led=7'b1111111;

4'b1001:

led=7'b1101111;

4'b1010:

led=7'b1110111;

default:

led=7'b0111111;

endcase

end

endmodule

顶层模块:

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

inputclk,rst,en,load;

input[3:

0]data;

outputcout;

output[6:

0]led;

output[3:

0]scan;

wire[3:

0]cnt;

wire[6:

0]led;

wire[3:

0]scan;

fenpin25u0(clk,rst,clk_1hz);

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

qiduanu2(cnt,led,scan);

endmodule

方法二:

模块一:

modulesysclk(reset,sys_clk,clk_1hz);

inputsys_clk;

inputreset;

outputclk_1hz;

reg[24:

0]cnt25m;

regclk_1hz;

always@(posedgesys_clk)

if(reset==1'b1)

cnt25m<=25'd0;

elseif(cnt25m==25'd25000000)

begin

cnt25m<=25'd0;

clk_1hz<=~clk_1hz;

end

else

cnt25m<=cnt25m+1'b1;

endmodule

模块二:

modulecnt_10(reset,clk,cnt);

inputclk,reset;

output[3:

0]cnt;

reg[3:

0]cnt;

always@(posedgeclkorposedgereset)

begin

if(reset==1'b1)

cnt<=4'b0000;

elseif(cnt==4'd9)

cnt<=4'b0000;

else

cnt<=cnt+1;

end

endmodule

模块三:

moduleymxs(cnt,scan,data_out,);

input[3:

0]cnt;

output[7:

0]data_out;

output[3:

0]scan;

assignscan=4'b0001;

reg[7:

0]data_out;

wire[3:

0]scan;

always@(cnt)

begin

case(cnt)

4'b0000:

data_out<=8'b00111111;

4'b0001:

data_out<=8'b00000110;

4'b0010:

data_out<=8'b01011011;

4'b0011:

data_out<=8'b01001111;

4'b0100:

data_out<=8'b01100110;

4'b0101:

data_out<=8'b01101101;

4'b0110:

data_out<=8'b01111101;

4'b0111:

data_out<=8'b00000111;

4'b1000:

data_out<=8'b01111111;

4'b1001:

data_out<=8'b01101111;

default:

data_out<=8'b00000000;

endcase

end

endmodule

顶层模块

moduletotal(reset,sys_clk,data_out,scan);

inputsys_clk;

inputreset;

output[7:

0]data_out;

output[3:

0]scan;

wireclk_1hz;

wire[3:

0]cnt;

sysclkU1(reset,sys_clk,clk_1hz);

cnt_10U2(reset,clk_1hz,cnt);

ymxsU3(cnt,scan,data_out);

endmodule

占空比为1:

15的分频电路设计

moduleclk_15_1(clk,rst,clk_div);

inputclk,rst;

outputclk_div;

regclk_div;

reg[3:

0]cnt;

always@(posedgeclkorposedgerst)

begin

if(rst==1'b1)cnt<=4'b0000;

elsecnt<=cnt+1;

end

always@(posedgeclkorposedgerst)

begin

if(rst==1'b1)clk_div<=1'b0;

elseif(cnt==4'd15)clk_div<=1'b1;

elseclk_div<=1'b0;

end

endmodule

占空比为10:

6的波形设计和仿真

moduleclk_10_6(clk,rst,clk_div);

inputclk,rst;

outputclk_div;

regclk_div;

reg[3:

0]cnt;

always@(posedgeclkorposedgerst)

begin

if(rst==1'b1)cnt<=4'b0000;

elsecnt<=cnt+1;

end

always@(posedgeclkorposedgerst)

begin

if(rst==1'b1)clk_div<=1'b0;

elseif(cnt>=4'd10)clk_div<=1'b1;

elseclk_div<=1'b0;

end

endmodule

移位寄存器

1.并入串出

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

inputclk,rst,load;

input[3:

0]din;

outputdout;

regdout;

reg[3:

0]q;

always@(posedgeclkornegedgerst)

begin

if(rst==1'b0)

dout<=4'b0000;

elseif(load==1'b1)

q<=din;

else

begin

q<=q<<1;

q[0]<=1'b0;

end

dout<=q[3];

end

endmodule

2.串入并出

modulemyshift_2(din,clk,rst,dout);

inputdin,clk,rst;

output[3:

0]dout;

reg[3:

0]dout;

always@(posedgeclkornegedgerst)

begin

if(rst==1'b0)

dout<=4'b0000;

else

dout={dout[2:

0],din};

end

endmodule

3.串入串出

moduleshift_1(din,clk,dout);

inputdin,clk;

outputdout;

regdout;

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

always@(posedgeclk)

begin

tmp1<=din;

tmp2<=tmp1;

tmp3<=tmp2;

tmp4<=tmp3;

tmp5<=tmp4;

tmp6<=tmp5;

tmp7<=tmp6;

dout<=tmp7;

end

endmodule

 

循环移位寄存器设计

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

⏹inputclk,rst;

⏹input[3:

0]din;

⏹output[3:

0]dout;

⏹reg[3:

0]dout;

⏹always@(posedgeclkorposedgerst)

⏹begin

⏹if(rst==1'b1)

⏹dout<=din;

⏹elsebegin

⏹dout[3:

1]<=dout[2:

0];

⏹dout[0]<=dout[3];

⏹end

⏹end

⏹endmodule

流水灯循环移位点亮

模块一

moduleshift_8(clk_2,rst,din,dout);

inputclk_2,rst;

input[3:

0]din;

output[7:

0]dout;

reg[7:

0]dout;

always@(posedgeclk_2orposedgerst)

begin

if(rst==1'b1)

dout<=din;

else

begin

dout[7:

1]<=dout[6:

0];

dout[0]<=dout[7];

end

end

endmodule

模块二:

modulefenpin(rst,clk,clk_1hz);

inputrst,clk;

outputclk_1hz;

regclk_1hz;

reg[24:

0]counter;

always@(posedgeclkorposedgerst)

begin

if(rst==1)

counter<=0;

elseif(counter==25'd25000000)

begin

counter<=0;

clk_1hz<=~clk_1hz;

end

else

counter<=counter+1'b1;

end

endmodule

顶层模块:

modulezong(rst,clk,din,dout);

inputrst,clk;

input[3:

0]din;

output[7:

0]dout;

wireclk_1hz;

fenpinU1(rst,clk,clk_1hz);

shift_8U2(clk_1hz,rst,din,dout);

endmodule

 

数码管段轮流点亮

模块一:

modulefenpin(rst,clk,clk_1hz);

inputrst,clk;

outputclk_1hz;

regclk_1hz;

reg[24:

0]counter;

always@(posedgeclkorposedgerst)

begin

if(rst==1)

counter<=0;

elseif(counter==25'd25000000)

begin

counter<=0;

clk_1hz<=~clk_1hz;

end

else

counter<=counter+1'b1;

end

endmodule

模块二:

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

inputclk_2,rst;

input[3:

0]din;

output[3:

0]scan;

output[7:

0]dout;

reg[7:

0]dout;

assignscan=4'b0001;

always@(posedgeclk_2orposedgerst)

begin

if(rst==1'b1)

dout<=din;

else

begin

dout[7:

1]<=dout[6:

0];

dout[0]<=dout[7];

end

end

endmodule

顶层模块:

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

inputrst,clk;

input[3:

0]din;

output[7:

0]dout;

output[3:

0]scan;

wireclk_1hz;

fenpinU1(rst,clk,clk_1hz);

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

endmodule

时钟

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

inputsys_clk,reset,pause;

output[3:

0]scan;

output[7:

0]data_out;

reg[2

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

当前位置:首页 > 法律文书 > 调解书

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

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