【FPGA每周一练汇总帖】FPGA的HDL建模持续更新
课程简介:这一版的论坛笔记只适合入门者,因为这论坛笔记按着由浅入深编辑的,只适合做入门引子。建议初学者者先从一些权威的参考书去了解“什么是Verlilog HDL 语言”,同时在跟着我们的论坛笔记进行练习,以达到快速理解的目的。FPGA 宛一堆乐高积和Verilog HDL 是自己的手(工具) ,自己可以随心所愿的要怎么拆就怎么拆。
第一周:
1、设计一个全加器。
- <font color="#000000">module MUX( C,D,E,F,S,out);
- input C,D,E,F ; //input
- input [1:0] S ; //select
- control
- output reg out ; //result
- //___________________cut_______________________//
- always@(C or D or E or F or S)
- begin
- case (S)
- 2'b00 : Mux_out = C ;
- 2'b01 : Mux_out = D ;
- 2'b10 : Mux_out = E ;
- default : Mux_out = F ;
- endcase
- end</font>
- <font color="#ff0000">endmodule</font>
复制代码2、四选一的多路选择器。- module fulladd(cout, sum, ain, bin, cin);
- input ain, bin, cin; //input
- output sum, cout;
-
- wire sum; //summation
- wire cout; //carry output
- //________________________cut__________________________//
- assign sum = ain ^ bin ^ cin;
- assign cout = (ain & bin) | (bin & cin) | (ain & cin);
- endmodule
复制代码第二周:1、设计一个10进制计数器;
- module count(clk,rstn,en,dout);
- input clk,rstn,en;
- output reg [4:0] dout;
-
- always@(posedge clk or negedge rstn)
- if (!rstn)
- dout<=4'b0000;
- else
- if(en==1'b1)
- begin
- if(dout==4'b1010)
- dout<=4'b0000;
- else
- dout<=dout+1;
- end
- endmodule
复制代码
2、设计3-8译码器。
- module decode(Ain,en,dout);
- input [2:0] Ain;
- input en;
- output reg [7:0] dout;
-
- always@(en or Ain)
- if(en==1'b1)
- case(Ain)
- 3'b000: dout <= 8'b11111110;
- 3'b001: dout <= 8'b11111101;
- 3'b010: dout <= 8'b11111011;
- 3'b011: dout <= 8'b11110111;
- 3'b100: dout <= 8'b11101111;
- 3'b101: dout <= 8'b11011111;
- 3'b110: dout <= 8'b10111111;
- 3'b111: dout <= 8'b01111111;
- endcase
- else
- dout<=8'b11111111;
复制代码第三周:用Verilog HDL设计 1、8位循环移位寄存器- <font color="#000000">module shift
- (
- input clk,rstn,
- output reg [7:0] dout
- );</font>
- <font color="#000000">/***************************************/</font>
- <font color="#000000"> always@(posedge clk or negedge rstn)</font>
- <font color="#000000"> begin</font>
- <font color="#000000"> if(!rstn)</font>
- <font color="#000000"> dout[7:0]<=8'b00000001;</font>
- <font color="#000000"> else</font>
- <font color="#000000"> dout[7:0]<={dout[6:0],dout[7]};</font>
- <font color="#000000"> end</font>
- <font color="#000000">/***************************************/</font>
- <font color="#000000">endmodule</font>
复制代码2、D触发器(上升沿触发)
- <font color="#000000">module d
- (
- input clk,clr,din,
- output q;
- );
- reg din,q;
- /***************************************/
- always@(posedge clk)
- if(clr)
- q<=0;
- else
- q<=din;
- /***************************************/
- endmodule</font>
复制代码
更多内容:
【FPGA每周一练】FPGA的HDL建模第一周
【FPGA每周一练】FPGA的HDL建模第二周
【FPGA每周一练】FPGA的HDL建模第三周
【FPGA每周一练】第四周:用Verilog HDL设计
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>