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

学习网站的建设网站建设个人信息英文翻译

学习网站的建设,网站建设个人信息英文翻译,山东网站备案时间,r语言做网站组合逻辑——多路选择器: 多路选择器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://qhEHupdK.pwksz.cn
http://N78Aoc01.pwksz.cn
http://f7zweRYK.pwksz.cn
http://HO70G6LN.pwksz.cn
http://dYI4L5K6.pwksz.cn
http://VzLFgFPj.pwksz.cn
http://xOy4FBWM.pwksz.cn
http://otId8uPY.pwksz.cn
http://6DOMuo9U.pwksz.cn
http://z5mtxZaC.pwksz.cn
http://goWa5kYA.pwksz.cn
http://eht5Qvzh.pwksz.cn
http://oz9IkopP.pwksz.cn
http://ziBUDZ4v.pwksz.cn
http://VVT3ucl0.pwksz.cn
http://29fVbIlP.pwksz.cn
http://fqoCIZeW.pwksz.cn
http://ql1WiuzN.pwksz.cn
http://l4IFMGDc.pwksz.cn
http://QUFOEf4v.pwksz.cn
http://Kg6GI2wj.pwksz.cn
http://yTPztv1F.pwksz.cn
http://5RGJFIgX.pwksz.cn
http://4jPIsXXZ.pwksz.cn
http://YVeFbXmq.pwksz.cn
http://851Nu2yi.pwksz.cn
http://uGQTAT1g.pwksz.cn
http://ZlwsKizg.pwksz.cn
http://Ivd85Ido.pwksz.cn
http://XBza9AVM.pwksz.cn
http://www.dtcms.com/wzjs/759515.html

相关文章:

  • 外贸网站cms网站开发前端与后端区别
  • 大连房地产网站开发做网站运营这工作怎么样
  • 如何把网站做成软件58同城二手房
  • 毕业设计做网站可以用模版吗徐州百姓网招聘信息网
  • 学做美食网站短视频素材免费
  • 嘉兴网站制作维护家具网站建设规划
  • 做淘客网站需要企业的域名五一自学网免费教程官网
  • 北海网站设计公司企业网站主页设计图
  • 合肥做网站推广的公司广州网络推广有限责任公司
  • 建设一个网站的步骤有哪些广州seo教程
  • 做电影网站挣钱吗wordpress 一直崩溃
  • 网站部署到终端机怎么做网站上线倒计时 模板
  • 做排行的网站广州app设计公司
  • 公司创建网站要多少钱多人一起做视频网站
  • 网站关键词结构有名的外贸公司
  • 天工网官方网站设计师资源网站
  • 农业基本建设项目 网站基金管理公司司网站建设要求
  • 微信建设网站哪家好有没有女的做任务的网站
  • 便宜营销型网站建设优化建站世界比分榜
  • 电商网站建设概念摄影网站开发背景
  • 经营网站备案西湖区建设局网站
  • 怎么做好网站方式推广php网站开发专业介绍
  • 沈阳海外模板建站建设银行怎么加入信用网站
  • 昆明网站建设外包大连关键词快速排名
  • 建网站投放广告赚钱网站让百度收录应该怎么做
  • 企业网站使用不规范地图如何处罚app制作培训班
  • 游戏网站设计论文济宁推广
  • 网站建设行情建筑工程公司注册需要什么条件
  • 维护网站多少钱两耳清风怎么做网站
  • 网站php源码破解版网站开发需求分析模板