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

经营性网站备案电子标识2021热门网络营销案例

经营性网站备案电子标识,2021热门网络营销案例,建网站哪家好,南京专业做网站公司地址组合逻辑——多路选择器: 多路选择器MUX(multiplexer)是一个多输入、单输出的组合逻辑电路,一个N输入的多路选择器就是一个N路的数字开关,可以根据通道选择控制信号的不同,从N个输入中选取一个输出到公共的…

组合逻辑——多路选择器:

多路选择器MUX(multiplexer)是一个多输入、单输出的组合逻辑电路,一个N输入的多路选择器就是一个N路的数字开关,可以根据通道选择控制信号的不同,从N个输入中选取一个输出到公共的输出端。多路选择器也是FPGA内部的一个基本资源,主要用于内部信号的选通。简单的多路选择器还可以通过级联生成更大的多路选择器。这里介绍一个四选一的多路选择器。

verilog代码:

module mux4_1(
input              in1 ,//输入四个信号
input              in2 ,
input              in3 ,
input              in4 ,
input        [1:0] sel ,//输入条件信号
output  reg        out  //输出信号);always@(*)begincase(sel)2'b00:out <= in1;2'b01:out <= in2;2'b10:out <= in3;2'b11:out <= in4;default:;endcase
endendmodule

tb代码:

`timescale 1ns / 1psmodule tb_test();
reg       in1 ;
reg       in2 ;
reg       in3 ;
reg       in4 ;
reg [1:0] sel ;
wire      out ;initial begin
in1 = 0;
in2 = 1;
in3 = 1;
in4 = 0;
sel = 2'b00;
#100
sel = 2'b10;
#100
sel = 2'b11;
#100
sel = 2'b01;endmux4_1 u_mux4_1(
.   in1  (in1),//输入四个信号
.   in2  (in2),
.   in3  (in3),
.   in4  (in4),
.   sel  (sel),//输入条件信号
.   out  (out) //输出信号);endmodule

在仿真中我们分别给四个输入信号赋初值,每次间隔100ns更改sel的值

仿真结果:

由仿真结果可以出,四个输入信号成功赋初值,每当sel发生改变时,out输出的值也在发生改变。自此多路选择器成功实现。


组合逻辑——译码器:

译码器是一种多输入多输出的组合逻辑电路,译码是编码的逆过程,同时去掉比特流在传播过程中混入的噪声。利用译码表把文字译成一组组数码或用译码表将代表某一项信息的一系列信号译成文字的过程称之为译码。在数码管等部分需要使用,这里将介绍其中一种——38译码器。

verilog代码:

module yima3_8(
input            A    ,//输入三个数据信号
input            B    ,//
input            C    ,//
output reg [7:0] out   //输出译码后的8位二进制数);
wire [2:0] sel;//定义一个3位的信号assign sel = {A,B,C};//通过拼接的方式将输入的三个数据组成在一起 000 001 010等always@(*)begincase(sel)3'b000:out <= 8'b0000_0001;3'b001:out <= 8'b0000_0010;3'b010:out <= 8'b0000_0100;3'b011:out <= 8'b0000_1000;3'b100:out <= 8'b0001_0000;3'b101:out <= 8'b0010_0000;3'b110:out <= 8'b0100_0000;3'b111:out <= 8'b1000_0000;default:;
endcase
endendmodule

tb代码:

`timescale 1ns / 1psmodule tb_test();
reg A ;
reg B ;
reg C ;
wire [7:0] out;initial begin
A = 0;B = 0;C = 0;
#100
A = 0;B = 0;C = 1;
#100
A = 0;B = 1;C = 0;
#100
A = 0;B = 1;C = 1;
#100
A = 1;B = 0;C = 0;
#100
A = 1;B = 0;C = 1;
#100
A = 1;B = 1;C = 0;
#100
A = 1;B = 1;C = 1;endyima3_8 u_yima3_8(
.    A    (A  ),
.    B    (B  ),
.    C    (C  ),
.    out  (out)
);endmodule

在仿真代码中每间隔100ns给A、B、C三个输入信号赋不同的值

仿真结果:

由于这里是组合逻辑,因此在仿真代码中并没有加入时钟,根据仿真结果可以看到每相隔100ns,A、B、C数据跳变一次,同时输出的8位数据也在跳变。那么译码器就编写成功,感兴趣的可以去尝试一下其它多路输入输出。


边沿检测电路:

在实际设计中,通常需要观测信号是否发生跳变,这里通常需要有一个边沿检测电路,它也是一种非常典型的电路设计。一般可分为上边沿检测、下边沿检测、双边沿检测电路。

verilog代码:

module edge_test(input  wire clk       ,//时钟input  wire rst_n     ,//复位input       a         ,//输入待检测信号output      a_posedge ,//输出上边沿检测output      a_negedge ,//输出下边沿检测output      a_edge     //输出双沿检测);reg a_dly ;//将待检测信号寄存打一拍always @(posedge clk or negedge rst_n)beginif(!rst_n)a_dly <= 0;elsea_dly <= a;endassign    a_posedge = a & ~a_dly;//待检测信号与上打拍后取反信号
assign    a_negedge = ~a & a_dly;//取反待检测信号与上打拍后信号
assign    a_edge    = a ^ a_dly ;//待检测信号异或打拍后信号endmodule

tb代码:

`timescale 1ns / 1psmodule tb_test();
reg   clk       ;  
reg   rst_n     ;  
reg   a         ;  
wire  a_posedg  ;
wire  a_negedg  ;
wire  a_edge    ;initial begin
clk   = 0;
rst_n = 0;
a     = 0;#101 rst_n = 1;
#20  a     = 1;
#100 a     = 0;endalways #10 clk = ~clk;edge_test u_edge_test(.   clk        (clk      ),//时钟.   rst_n      (rst_n    ),//复位.   a          (a        ),//输入待检测信号.   a_posedge  (a_posedge),//输出上边沿检测.   a_negedge  (a_negedge),//输出下边沿检测.   a_edge     (a_edge   ) //输出双沿检测);endmodule

仿真结果:

由仿真结果可以看到,在经过101ns后复位拉高,再经过20ns后信号a到来,a_dly打一拍后在下一个时钟周期拉高。经过100ns后a信号拉低,a_dly信号也随之拉低。

上升沿:粉色信号线

下降沿:紫色信号线

双边沿检测:黄色信号线


分频电路:

在开发过程中,通常会遇到对时钟进行分频或倍频,一般情况下使用的是PLL(锁相环),但由于其特性,可能在某些特定环境下无法实现分频,这时候就可以使用verilog代码来设计分频电路。

偶分频:

这里设计一个四分配电路为例,实现方法就是套用公式n/2-1,得到cnt计数为1,每次cnt加到1,清零时钟翻转

verilog代码:

module divider_4(
input   wire clk     ,//输入系统时钟
input   wire rst_n   ,//输入复位信号
output  reg  out_clk  //输出分频后时钟);reg [1:0] cnt;//用于分频计数always @(posedge clk or negedge rst_n)beginif(!rst_n)cnt <= 0;else if(cnt == 1)cnt <= 0;elsecnt <= cnt + 1;
endalways @(posedge clk or negedge rst_n)beginif(!rst_n)out_clk <= 0;else if(cnt == 1)out_clk <= ~out_clk;elseout_clk <= out_clk;
endendmodule

tb代码:

`timescale 1ns / 1psmodule tb_test();
reg   clk       ;  
reg   rst_n     ;  
wire  out_clk   ;initial begin
clk   = 0;
rst_n = 0;#101 rst_n = 1;endalways #10 clk = ~clk;divider_4 u_divider_4(
.   clk      (clk    ),//输入系统时钟
.   rst_n    (rst_n  ),//输入复位信号
.   out_clk  (out_clk) //输出分频后时钟);endmodule

仿真结果:

由上图可以看出,粉色是分频后的时钟,分频后的一个完整的时钟周期相当于分频前的四个时钟周期,根据cnt计数进行翻转。

奇分频:

这里设计一个7分频电路,将会存在两个delay,第一个是n-1为6,第二个是n-/2为3,同时一个检测上升沿,一个检测下降沿,最后再将两者用或门输出。

verilog代码:

module divider_7(
input  wire clk     ,//时钟
input  wire rst_n   ,//复位
output      out_clk  //分频后时钟);parameter delay  = 6    ;//定义分频次数 N-1reg [2:0] cnt     ;//分频计数
reg       out_clk1;//上升沿
reg       out_clk2;//下降沿always @(posedge clk or negedge rst_n)beginif(!rst_n)cnt <= 0;else if(cnt == delay)//计数器等于6清零cnt <= 0;elsecnt <= cnt + 1;
endalways @(posedge clk or negedge rst_n)begin//检测上升沿if(!rst_n)out_clk1 <= 0;else if(cnt == 3 || cnt == 6)out_clk1 <= ~out_clk1;elseout_clk1 <= out_clk1;
endalways @(negedge clk or negedge rst_n)begin//检测下降沿if(!rst_n)out_clk2 <= 0;else if(cnt == 3 || cnt == 6)out_clk2 <= ~out_clk2;elseout_clk2 <= out_clk2;
endassign out_clk = out_clk1 || out_clk2;//用或门将两者合并输出endmodule

tb仿真:

`timescale 1ns / 1psmodule tb_test();
reg   clk       ;  
reg   rst_n     ;  
wire  out_clk   ;initial begin
clk   = 0;
rst_n = 0;#101 rst_n = 1;endalways #10 clk = ~clk;divider_7 u_divider_7(
.   clk      (clk    ),//时钟
.   rst_n    (rst_n  ),//复位
.   out_clk  (out_clk) //分频后时钟);endmodule

仿真结果:

由上图可以看出,黄色的线是最终合并输出的7分频后时钟,它由7个原本的时钟构成。

总结:

以上是一些常见的FPGA数字电路基础设计,感兴趣的可以去尝试一下。有错误的地方希望能够指出,谢谢!

http://www.dtcms.com/wzjs/35981.html

相关文章:

  • 商城网站定制怎么做生猪价格今日猪价
  • 网站开发专业的领军人物沈阳百度推广优化
  • 兰州网站开发企业网站制作开发
  • 专门做油画交流的网站西安百度推广怎么做
  • 江门微信网站建设洛阳seo外包公司费用
  • 成都哪里做网站备案网站免费推广网站
  • 上海的网络推广河北seo基础
  • 做搞机网站我是seo关键词
  • 合肥公司网站建设价格杭州网站优化公司哪家好
  • 素材网站上的元素是怎么做的谷歌收录查询工具
  • 网络营销营销型网站seo人人网
  • 在哪个网站做问卷好企业文化设计
  • 祥云平台网站建设北京百度总部电话
  • wordpress整站隐藏图片外链在线生成
  • 深圳高品质网站建设服务潍坊今日头条新闻
  • 福州外语外贸学院无锡网站建设方案优化
  • 企业宣传网站建设说明书产品推广软文500字
  • 销售型网站建设基本要素黑帽seo排名
  • 推广平台开户代理郴州seo网络优化
  • 如何查看网站备案信息吗关键词怎么提取
  • 青岛的网站建设公司哪家好seo排名优化推广教程
  • 网站模板内容页在哪成都移动seo
  • 阳春网站制作西安优化seo托管
  • 济宁高端网站建设网站群发软件
  • 做任务网站seo网站关键词快速排名
  • 南通做网站推广的公司网页搜索关键词
  • 做网站需要多少台服务器导购网站怎么推广
  • 界面设计网站推荐百度seo网站优化服务
  • 网站开发前台代码和后台代码网站建设费用多少钱
  • 做购物网站如何推广优化防疫措施