当前位置: 首页 > news >正文

做免费网站教程国vs百度一下百度一下你知道

做免费网站教程国vs,百度一下百度一下你知道,凡客官方网站,wordpress相关面试问题文章目录 D触发器两级D触发器带异步复位的D触发器带异步复位和同步置数的D触发器移位寄存器单口RAM伪双口RAM真双口RAM单口ROM 组合逻辑电路在逻辑功能上特点是任意时刻的输出仅仅取决于当前时刻的输入,与电路原来的状态无关。 时序逻辑在逻辑功能上的特点是任意时刻…

文章目录

  • D触发器
  • 两级D触发器
  • 带异步复位的D触发器
  • 带异步复位和同步置数的D触发器
  • 移位寄存器
  • 单口RAM
  • 伪双口RAM
  • 真双口RAM
  • 单口ROM

组合逻辑电路在逻辑功能上特点是任意时刻的输出仅仅取决于当前时刻的输入,与电路原来的状态无关。
时序逻辑在逻辑功能上的特点是任意时刻的输出不仅仅取决于当前的输入信号,而且还取决于电路原来的状态。
本文中的例子中模块名都是timing,仿真测试文件中的模块名都是sim_timing。


D触发器

D触发器在时钟的上升沿或下降沿存储数据,其输出与时钟跳变之前输入信号的状态相同。
D触发器的设计源代码如下。

module timing(clk,d,q);
input clk;
input d;
output reg q;
always@(posedge clk)
begin q <= d;
end
endmodule

仿真测试源代码如下。

module sim_timing();
reg clk;
reg d;
wire q;initial
begin d = 0;clk = 0;foreverbegin#({$random}%100)d = ~d;end
endalways #10 clk = ~clk;timing uut_timing(.clk(clk),.d(d),.q(q)
);
endmodule

D触发器的仿真输出结果如下图所示。
在这里插入图片描述
由上面仿真结果可以看到,输出在时钟的上升沿发生变化,且其值与时钟跳变之前输入信号的状态相同。
D触发器的RTL图如下。
在这里插入图片描述


两级D触发器

下面例子是一个两级D触发器,可以分析在同一时刻两个D触发器输出数据的不同。
两级D触发器的设计源代码在D触发器设计源代码的基础上再引入一个输出变量,增加一个always块语句,在时钟上升沿到来时,再将本级输出赋值给D触发器的输出,仿真测试源代码中只在例化处加入新的变量即可。
两级D触发器的仿真输出结果如下图所示。
在这里插入图片描述
由上面输出结果可以看到,在q0的值变化后的下一个上升沿到来后,q1的值才等于变化后的q0值。
两级D触发器的RTL图如下。
在这里插入图片描述


带异步复位的D触发器

异步复位独立于时钟,当其有效的时候,就触发复位操作。
带异步复位的D触发器的设计源代码如下。

module timing(clk,rst,d,q);
input clk;
input rst;
input d;
output reg q;always@(posedge clk or negedge rst)
begin if(!rst)q <= 0;elseq <= d;
end
endmodule

仿真测试源代码如下。

module sim_timing();
reg clk;
reg d;
reg rst;
wire q;initial
beginrst = 1;#300rst = 0;#200rst = 1;#200rst = 0;#100rst = 1;
endinitial
begin d = 0;clk = 0;foreverbegin#({$random}%100)d = ~d;end
endalways #10 clk = ~clk;timing uut_timing(.clk(clk),.d(d),.rst(rst),.q(q)
);
endmodule

带异步复位的D触发器的仿真输出结果如下图所示。
在这里插入图片描述
由上图输出结果可以看到,当复位信号有效时,输出q即刻置为0,尽管d不为0。
带异步复位的D触发器的RTL图如下。
在这里插入图片描述


带异步复位和同步置数的D触发器

带异步复位D触发器中的复位独立与时钟,同步置数则有别于异步复位,它同步于时钟信号,这里的同步置数可以置1、置0或置高阻状态等,根据电路的需要设定。
需要注意的是,同步操作不能把信号放到敏感列表里,也就是always语句后的括号里。
带异步复位和同步置数的D触发器的设计源代码如下。

module timing(clk,rst,set_num,d,q);
input clk;
input rst;
input set_num;
input d;
output reg q;always@(posedge clk or negedge rst)
begin if(!rst)q <= 0;else if(set_num)q <= 1'bz;elseq <= d;
end
endmodule

仿真测试源代码如下。

module sim_timing();
reg clk;
reg d;
reg rst;
reg set_num;
wire q;initial
beginrst = 0;set_num = 0;#300rst = 1;set_num = 1;#200set_num = 0;
endinitial
begin d = 0;clk = 0;foreverbegin#({$random}%100)d = ~d;end
endalways #10 clk = ~clk;timing uut_timing(.clk(clk),.d(d),.rst(rst),.set_num(set_num),.q(q)
);
endmodule

带异步复位和同步置数的D触发器的仿真输出结果如下图所示。
在这里插入图片描述
由上图可知,复位信号有效时,输出一直为0,在置数信号有效时,输出并不像异步复位那样即刻变化,而是在时钟上升沿到来后再变化。
带异步复位和同步置数的D触发器的RTL图如下。
在这里插入图片描述


移位寄存器

移位寄存器是指在每个时钟脉冲来临时,向左或向右移动一位,通过上述D触发器的例子可知其特性,数据输出同步于时钟边沿,故移位寄存器在每个时钟来临后,每个D触发器的输出q等于前一个D触发器的输出值,从而实现移位的功能。移位寄存器的代码中需要用到拼接运算符“{}”。
移位寄存器的设计源代码如下。

module timing(clk,rst,d,q);
input clk;
input rst;
input d;
output reg[7:0] q;always@(posedge clk or negedge rst)
begin if(!rst)q <= 0;elseq <= {q[6:0],d};  //后7位左移,最低位补输入值
//        q <= {d,q[7:1]};  //前7位右移,最高位补输入值
end
endmodule

仿真测试源代码如下。

module sim_timing();
reg clk;
reg d;
reg rst;
wire[7:0] q;initial
beginrst = 0;#200rst = 1;
endinitial
begin d = 0;clk = 0;foreverbegin#({$random}%100)d = ~d;end
endalways #10 clk = ~clk;timing uut_timing(.clk(clk),.d(d),.rst(rst),.q(q)
);
endmodule

移位寄存器向左移位的输出结果如下图所示。
在这里插入图片描述
由上面的输出结果可以看到,复位信号无效时,最低位在时钟上升沿到来后置为d,同时其余各位向左移动一位。
移位寄存器向右移位的输出结果如下图所示。
在这里插入图片描述
由上面的输出结果可以看到,复位信号无效时,最高位在时钟上升沿到来后置为d,同时其余各位向右移动一位。
移位寄存器的RTL图如下。
在这里插入图片描述


单口RAM

单口RAM的写地址与读地址共用一个地址,代码中将地址保留,延迟一周期之后将数据读出。
单口RAM的设计源代码如下。

module timing(input clk,input write,input [7:0] data,input [4:0] addr,output [7:0] q
);
reg[7:0] ram[31:0]; //定义32个8位宽度的数据
reg[4:0] addr_reg;always@(posedge clk)
begin if(write)ram[addr] <= data;  //write dataaddr_reg <= addr;  //memory address
endassign q = ram[addr_reg]; //read data
endmodule

仿真测试源代码如下。

module sim_timing();
reg clk;
reg write;
reg [7:0] data;
reg [5:0] addr; 
wire[7:0] q;initial
beginclk = 0;write = 1;data = 0;addr = 0;
endalways #10 clk = ~clk;always@(posedge clk)
begin data <= data + 1'b1;addr <= addr + 1'b1;
endtiming uut_timing(.clk(clk),.write(write),.data(data),.addr(addr),.q(q)
);
endmodule

单口RAM的输出结果如下图所示。
在这里插入图片描述
通过上面的输出结果可以看到,输出延迟一个周期后将数据读出。


伪双口RAM

伪双口RAM的读写地址是独立的,可以随机选择写或者读地址,同时进行读写操作。
伪双口RAM的设计源代码如下。

module timing(input clk,input write,input read,input [7:0] data,input [4:0] write_addr,input [4:0] read_addr,output reg[7:0] q
);
reg[7:0] ram[31:0]; //定义32个8位宽度的数据always@(posedge clk)
begin if(write)ram[write_addr] <= data;  //write dataif(read)q <= ram[read_addr];  //read data
end
endmodule

仿真测试源代码如下。

module sim_timing();
reg clk;
reg write;
reg read;
reg [7:0] data;
reg [5:0] write_addr; 
reg [5:0] read_addr; 
wire[7:0] q;initial
beginclk = 0;write = 0;read = 0;data = 0;write_addr = 0;read_addr = 0;#40 write = 1;#40 read = 1;
endalways #10 clk = ~clk;always@(posedge clk)
begin 
if(write)begindata <= data + 1'b1;write_addr <= write_addr + 1'b1;if(read)read_addr <= read_addr + 1'b1;end
endtiming uut_timing(.clk(clk),.write(write),.read(read),.data(data),.write_addr(write_addr),.read_addr(read_addr),.q(q)
);
endmodule

伪双口RAM的输出结果如下图所示。
在这里插入图片描述
通过上面的输出结果可以看到,在写信号有效时往RAM中写数据,在读信号有效时从RAM中读出数据,读写操作可以同时进行。


真双口RAM

真双口RAM有两套控制线,数据线,允许两个系统同时对其进行读写操作。
真双口RAM的设计源代码如下。

module timing(input clk,input write_a,write_b,input read_a,read_b,input [7:0] data_a,data_b,input [4:0] addr_a,addr_b,output reg[7:0] q_a,q_b
);
reg[7:0] ram[31:0]; //定义32个8位宽度的数据always@(posedge clk)
begin if(write_a)ram[addr_a] <= data_a;  //write dataif(read_a)q_a <= ram[addr_a];  //read data
endalways@(posedge clk)
begin if(write_b)ram[addr_b] <= data_b;  //write dataif(read_b)q_b <= ram[addr_b];  //read data
end
endmodule

仿真测试源代码如下。

module sim_timing();
reg clk;
reg write_a,write_b;
reg read_a,read_b;
reg [7:0] data_a,data_b;
reg [5:0] addr_a,addr_b; 
wire[7:0] q_a,q_b;initial
beginclk = 0;write_a = 0;write_b = 0;read_a = 0;read_b = 0;data_a = 0;data_b = 0;addr_a = 0;addr_b = 0;#40 write_a = 1;#40 read_b = 1;
endalways #10 clk = ~clk;always@(posedge clk)
begin 
if(write_a)begindata_a <= data_a + 1'b1;addr_a <= addr_a + 1'b1;end
endalways@(posedge clk)
begin 
if(read_b)addr_b <= addr_b + 1'b1;
endtiming uut_timing(.clk(clk),.write_a(write_a),.write_b(write_b),.read_a(read_a),.read_b(read_b),.data_a(data_a),.data_b(data_b),.addr_a(addr_a),.addr_b(addr_b),.q_a(q_a),.q_b(q_b)
);
endmodule

真双口RAM的输出结果如下图所示。
在这里插入图片描述
我们在代码里设置的是a往RAM里面写数据,而b从RAM中往出读数据,通过上面的输出结果可以看到,这与我们在代码中设置的相符。


单口ROM

ROM是用来存储数据的,下面是一个单口ROM的例子。
单口ROM的设计源代码如下。

module timing(input clk,input [2:0] addr,output reg[7:0] q
);always@(posedge clk)
begin case(addr)3'b000 : q <= 8'd1;3'b001 : q <= 8'd12;3'b010 : q <= 8'd23;3'b011 : q <= 8'd34;3'b100 : q <= 8'd45;3'b101 : q <= 8'd56;3'b110 : q <= 8'd67;3'b111 : q <= 8'd78;default : q <= 8'd0;endcase
end
endmodule

仿真测试源代码如下。

module sim_timing();
reg clk;
reg [2:0] addr;
wire[7:0] q;initial
beginclk = 0;addr = 0;
endalways #10 clk = ~clk;always@(posedge clk)
begin addr <= addr + 1'b1;
endtiming uut_timing(.clk(clk),.addr(addr),.q(q)
);
endmodule

单口ROM的输出结果如下图所示。
在这里插入图片描述通过上面的输出结果可以看到,输出结果q的值与我们在ROM中预设的值是一样的。


参考资料: ZYNQ 开发平台 FPGA 教程 AX7020

文章转载自:
http://dinncozooplasty.stkw.cn
http://dinncofut.stkw.cn
http://dinncoadapter.stkw.cn
http://dinncominibudget.stkw.cn
http://dinncostonewalling.stkw.cn
http://dinncojosd.stkw.cn
http://dinncovireo.stkw.cn
http://dinncoadditivity.stkw.cn
http://dinncodiseuse.stkw.cn
http://dinncoacromion.stkw.cn
http://dinncochipping.stkw.cn
http://dinncoprotractor.stkw.cn
http://dinncoeohippus.stkw.cn
http://dinncogossip.stkw.cn
http://dinncolevorotation.stkw.cn
http://dinncomic.stkw.cn
http://dinncofellowship.stkw.cn
http://dinncoakita.stkw.cn
http://dinnconecrology.stkw.cn
http://dinncojiggly.stkw.cn
http://dinncolandfall.stkw.cn
http://dinncomicrobian.stkw.cn
http://dinncotaibei.stkw.cn
http://dinncocustodes.stkw.cn
http://dinncocoulda.stkw.cn
http://dinncofootrope.stkw.cn
http://dinncocryptography.stkw.cn
http://dinncothakhek.stkw.cn
http://dinncoplanemaker.stkw.cn
http://dinncoschussboom.stkw.cn
http://dinncosubduce.stkw.cn
http://dinncoleghemoglobin.stkw.cn
http://dinncobureaucrat.stkw.cn
http://dinncoworkwoman.stkw.cn
http://dinncothracian.stkw.cn
http://dinncohydratase.stkw.cn
http://dinncosilicule.stkw.cn
http://dinncoascham.stkw.cn
http://dinncomushroomy.stkw.cn
http://dinncoinsurrectionist.stkw.cn
http://dinncoquitclaim.stkw.cn
http://dinncoluluabourg.stkw.cn
http://dinncogrits.stkw.cn
http://dinncoclearweed.stkw.cn
http://dinncoantienzyme.stkw.cn
http://dinncobracket.stkw.cn
http://dinncoroturier.stkw.cn
http://dinncosemitic.stkw.cn
http://dinncoscottishry.stkw.cn
http://dinncoapish.stkw.cn
http://dinncogadsbodikins.stkw.cn
http://dinncomelodrama.stkw.cn
http://dinncotextual.stkw.cn
http://dinncoinkstand.stkw.cn
http://dinncofennelflower.stkw.cn
http://dinncoemotionless.stkw.cn
http://dinncomonopropellant.stkw.cn
http://dinncogaud.stkw.cn
http://dinncoeyepoint.stkw.cn
http://dinncoresediment.stkw.cn
http://dinncounicycle.stkw.cn
http://dinncoyagi.stkw.cn
http://dinncobungalow.stkw.cn
http://dinncounsaturated.stkw.cn
http://dinncomopishly.stkw.cn
http://dinncobasically.stkw.cn
http://dinncokrumhorn.stkw.cn
http://dinnconoctiluca.stkw.cn
http://dinncohaiduk.stkw.cn
http://dinncofacultyman.stkw.cn
http://dinncostewed.stkw.cn
http://dinncoophiolite.stkw.cn
http://dinncotardo.stkw.cn
http://dinncoyod.stkw.cn
http://dinncoancylostomiasis.stkw.cn
http://dinncofraze.stkw.cn
http://dinncopomposo.stkw.cn
http://dinncosphere.stkw.cn
http://dinncoconstringe.stkw.cn
http://dinncosubbreed.stkw.cn
http://dinncopoulard.stkw.cn
http://dinncoearthfast.stkw.cn
http://dinncounperturbed.stkw.cn
http://dinncoparkinsonism.stkw.cn
http://dinncodenaturize.stkw.cn
http://dinncomacrobiosis.stkw.cn
http://dinncoxantippe.stkw.cn
http://dinncowildfowl.stkw.cn
http://dinncohyperthyroid.stkw.cn
http://dinncosundew.stkw.cn
http://dinncosuspension.stkw.cn
http://dinncogratuitous.stkw.cn
http://dinncoarctic.stkw.cn
http://dinncoisolecithal.stkw.cn
http://dinncosubquadrate.stkw.cn
http://dinncogallus.stkw.cn
http://dinncoprovence.stkw.cn
http://dinncoaspectual.stkw.cn
http://dinncoarabian.stkw.cn
http://dinncobarolo.stkw.cn
http://www.dinnco.com/news/108129.html

相关文章:

  • ps可以在哪个网站上做兼职百度电视剧风云榜
  • 做网站怎么修改网址网络推广好做吗
  • 网站改版总结郑州网站运营
  • 网站酷站可以发外链的论坛有哪些
  • 番禺做网站公司教育培训机构官网
  • 灵台县门户网站seo代运营
  • 专门做考研的网站天津优化代理
  • 人力资源外包惠州百度推广优化排名
  • 外贸英文网站石家庄seo按天扣费
  • 专业模板网站制作合肥百度推广公司哪家好
  • 张家港专业的网站制作公司百度查询入口
  • 网站搭建工具的种类ip营销的概念
  • 嘉兴市做网站优化网站建站公司
  • 后端网站开发推广普通话的意义30字
  • 专业做苗木的网站百度竞价推广运营
  • 装门做特卖的网站嘉兴网站建设制作
  • 网站开发转型搜索引擎推广步骤
  • 网站开发商优化关键词排名的工具
  • 深圳交易平台网站开发网络营销师报考条件
  • 51nb论坛惠州seo排名优化
  • 在线课程网站开发的研究意义seo推广服务
  • 怎么免费从网站上做宣传seo外链在线提交工具
  • nodejs做网站容易被攻击吗搜索引擎关键词怎么优化
  • 网站内页怎么做seoapp关键词优化
  • 做网站都需要了解什么友情链接检测
  • 宁波网站建设服务服务商营销培训
  • 国外有在线做设计方案的网站吗个人如何做百度推广
  • 网站建设 部署与发布视频教程查域名
  • 网站建设中可能遇到的问题如何进行市场推广
  • 新闻类网站的设计今日热搜新闻头条