关注👆 望森FPGA 👆 查看更多FPGA资讯
这是望森的第 23 期分享
作者 | 望森
来源 | 望森FPGA
目录
[1 Combinational circuit 1](#1 Combinational circuit 1)
[2 Combinational circuit 2](#2 Combinational circuit 2)
[3 Combinational circuit 3](#3 Combinational circuit 3)
[4 Combinational circuit 4](#4 Combinational circuit 4)
[5 Combinational circuit 5](#5 Combinational circuit 5)
[6 Combinational circuit 6](#6 Combinational circuit 6)
[7 Sequential circuit 7](#7 Sequential circuit 7)
[8 Sequential circuit 8](#8 Sequential circuit 8)
[9 Sequential circuit 9](#9 Sequential circuit 9)
[10 Sequential circuit 10](#10 Sequential circuit 10)
本文中的代码都能够正常运行,请放心食用😋~
练习的官方网站是:https://hdlbits.01xz.net/
注:作者将每个练习的知识点都放在了题目和答案之后
1 Combinational circuit 1
题目:
这是一个组合电路。读一下仿真波形,确定电路的功能,然后实现它。
答案:
1.真值表
|---|---|---|
| a | b | q |
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
2.逻辑表达式
q = a & b;
3.代码
module top_module (
input a,
input b,
output q );//
assign q = a & b; // Fix me
endmodule
2 Combinational circuit 2
题目:
这是一个组合电路。读一下仿真波形,确定电路的功能,然后实现它。
答案:
1.卡诺图化简
根据波形可得:
2.逻辑表达式
根据卡诺图可发现规律:
q = (~(a^b) && ~(c^d)) || ((a^b) && (c^d));
3.代码
module top_module (
input a,
input b,
input c,
input d,
output q );//
assign q = (~(a^b) && ~(c^d)) || ((a^b) && (c^d)); // Fix me
endmodule
3 Combinational circuit 3
题目:
这是一个组合电路。读一下仿真波形,确定电路的功能,然后实现它。
答案:
1.卡诺图
2.逻辑表达式
q = a&c | a&d | b&c | b&d;
3.代码
module top_module (
input a,
input b,
input c,
input d,
output q );//
assign q = a&c | a&d | b&c | b&d; // Fix me
endmodule
4 Combinational circuit 4
题目:
这是一个组合电路。读一下仿真波形,确定电路的功能,然后实现它。
答案:
1.卡诺图
2.逻辑表达式
q = b | c;
3.代码
module top_module (
input a,
input b,
input c,
input d,
output q );//
assign q = b | c; // Fix me
endmodule
5 Combinational circuit 5
题目:
这是一个组合电路。读一下仿真波形,确定电路的功能,然后实现它。
答案:
module top_module (
input [3:0] a,
input [3:0] b,
input [3:0] c,
input [3:0] d,
input [3:0] e,
output [3:0] q );
always@(*)begin
q = 4'hf;
case(c)
4'h0 : q = b;
4'h1 : q = e;
4'h2 : q = a;
4'h3 : q = d;
endcase
end
endmodule
6 Combinational circuit 6
题目:
这是一个组合电路。读一下仿真波形,确定电路的功能,然后实现它。
答案:
module top_module (
input [2:0] a,
output [15:0] q );
always@(*)begin
case(a)
3'h0 : q = 16'h1232;
3'h1 : q = 16'haee0;
3'h2 : q = 16'h27d4;
3'h3 : q = 16'h5a0e;
3'h4 : q = 16'h2066;
3'h5 : q = 16'h64ce;
3'h6 : q = 16'hc526;
3'h7 : q = 16'h2f19;
endcase
end
endmodule
7 Sequential circuit 7
题目:
这是一个时序电路。读一下仿真波形,确定电路的功能,然后实现它。
答案:
module top_module (
input clk,
input a,
output q );
always@(posedge clk)begin
if(a)
q <= 0;
else
q <= 1;
end
endmodule
8 Sequential circuit 8
题目:
这是一个时序电路。读一下仿真波形,确定电路的功能,然后实现它。
答案:
module top_module (
input clock,
input a,
output p,
output q );
//p
always@(*)begin
if(clock)
p = a;
else
p = p;
end
//q
always@(negedge clock)begin
q <= p;
end
endmodule
知识点:
如图,p 为 "clock = 1"时 a 的信号,q 为时钟下降沿时 p 的信号。
9 Sequential circuit 9
题目:
这是一个时序电路。读一下仿真波形,确定电路的功能,然后实现它。
答案:
module top_module (
input clk,
input a,
output [3:0] q );
always@(posedge clk)begin
if(a)begin
q <= 4'h4;
end
else if(q == 4'h6)begin
q <= 4'h0;
end
else begin
q <= q + 1;
end
end
endmodule
10 Sequential circuit 10
题目:
这是一个顺序电路。该电路由组合逻辑和一位内存(即一个触发器)组成。触发器的输出已通过输出 state 可观察。
读取模拟波形以确定电路的功能,然后实现它。
答案:
1.真值表
|---|---|-------|---|------------|
| a | b | state | q | state_next |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
2.电路逻辑
q:当a、b、state中高电平的个数为奇数时,q为1,即q是一个偶校验位。
state_next:
由卡诺图化简可得,state_next = a & b | a & state | b & state;
3.代码
module top_module (
input clk,
input a,
input b,
output q,
output state );
//q
always@(*)begin
q = a ^ b ^ state;
end
//state
always@(posedge clk)begin
if(a & b | a & state | b & state)begin
state <= 1;
end
else begin
state <= 0;
end
end
endmodule
- END -
公z号/CSDN/知乎搜索【望森FPGA】,查看更多FPGA资讯~
相关推荐文章,点击跳转: