![c5ae096a-721e-eb11-8da9-e4434bdf6706.gif](http://p04.5ceimg.com/content/c5ae096a-721e-eb11-8da9-e4434bdf6706.gif)
今天给大侠带来“FPGA学习系列 altera"系列,持续更新。此学习心得是本人之前所写,所用设计软件为Quartus II 13.1,现Quartus II 新版本已更新到19+,以下仅供初学者学习参考。后续会更新其他系列,敬请关注。话不多说,上货。
![c6ae096a-721e-eb11-8da9-e4434bdf6706.gif](http://p04.5ceimg.com/content/c6ae096a-721e-eb11-8da9-e4434bdf6706.gif)
module (); ; ······ ······ endmodule
端口的方向:input(输入),output(输出),inout(双向端口)。 端口类型:wire(可以省略不写),reg。 端口的位宽:[X -1:0](定义一个位宽为X的总线)。
中间寄存器或中间连线,定义方法如下: wire [X-1:0] ; reg [X-1:0] ;
![c6ae096a-721e-eb11-8da9-e4434bdf6706.gif](http://p04.5ceimg.com/content/c6ae096a-721e-eb11-8da9-e4434bdf6706.gif)
module mux21 (dataa,datab, outdata, sel); input [2:0] dataa; input [2:0] datab; inpur sel; outdata [2:0] outdata; ········ ········endmodule
那么我们应该怎么样去调用它呢?如下:
( .端口(连线), .端口(连线) );
下面是用结构建模的方式实现三选一:
module mux31 (dataa, datab, datac, sel1, sel2, outdata); input[2:0] dataa; input[2:0] datab; input [2:0] datac; input sel1; input sel2; output [2:0] outdata; wire [2:0] data; mux21 mux21_dut1( .dataa(dataa), .datab(datab), .outdata(data), .sel(sel1) ); mux21 mux21_dut2( .dataa(data), .datab(datac), .outdata(outdata), .sel(sel2) ); endmodule
上述建模是利用了两个二选一多路选择器来构成了一个三选一多路选择器。
![c6ae096a-721e-eb11-8da9-e4434bdf6706.gif](http://p04.5ceimg.com/content/c6ae096a-721e-eb11-8da9-e4434bdf6706.gif)
![c6ae096a-721e-eb11-8da9-e4434bdf6706.gif](http://p04.5ceimg.com/content/c6ae096a-721e-eb11-8da9-e4434bdf6706.gif)
always @ (posedge clk) if(rst) outdata <= 0; else outdata <= indata;
![c6ae096a-721e-eb11-8da9-e4434bdf6706.gif](http://p04.5ceimg.com/content/c6ae096a-721e-eb11-8da9-e4434bdf6706.gif)
![cbae096a-721e-eb11-8da9-e4434bdf6706.png](http://p02.5ceimg.com/content/cbae096a-721e-eb11-8da9-e4434bdf6706.png)
FPGA技术江湖广发江湖帖
无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。
FPGA技术江湖微信交流群
加群主微信,备注职业+方向+名字进群
FPGA技术江湖QQ交流群
备注地区+职业+方向+名字进群