diff options
author | crupest <crupest@outlook.com> | 2021-11-09 17:44:15 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-11-09 17:44:15 +0800 |
commit | 6b99476d00173fedcb65fcedb418fcfb363f1e07 (patch) | |
tree | 2dce477e84ad9eba44a8622b3f5f3271f1547162 /works/life | |
parent | e6c2aff22fbf338a21e9fbb6dbf1492f607f297d (diff) | |
download | crupest-6b99476d00173fedcb65fcedb418fcfb363f1e07.tar.gz crupest-6b99476d00173fedcb65fcedb418fcfb363f1e07.tar.bz2 crupest-6b99476d00173fedcb65fcedb418fcfb363f1e07.zip |
import(life): ...
Diffstat (limited to 'works/life')
-rw-r--r-- | works/life/.DS_Store | bin | 8196 -> 10244 bytes | |||
-rw-r--r-- | works/life/computer-organization-experiment/.DS_Store | bin | 0 -> 6148 bytes | |||
-rw-r--r-- | works/life/computer-organization-experiment/.gitignore | 1 | ||||
-rw-r--r-- | works/life/computer-organization-experiment/Makefile | 21 | ||||
-rw-r--r-- | works/life/computer-organization-experiment/counter_4.vhdl | 19 | ||||
-rw-r--r-- | works/life/computer-organization-experiment/full_adder_1.vhdl | 13 | ||||
-rw-r--r-- | works/life/computer-organization-experiment/hdl-prj.json | 22 | ||||
-rw-r--r-- | works/life/computer-organization-experiment/test_bench.vhdl | 45 |
8 files changed, 121 insertions, 0 deletions
diff --git a/works/life/.DS_Store b/works/life/.DS_Store Binary files differindex c4a5fe2..a51aa91 100644 --- a/works/life/.DS_Store +++ b/works/life/.DS_Store diff --git a/works/life/computer-organization-experiment/.DS_Store b/works/life/computer-organization-experiment/.DS_Store Binary files differnew file mode 100644 index 0000000..218d033 --- /dev/null +++ b/works/life/computer-organization-experiment/.DS_Store diff --git a/works/life/computer-organization-experiment/.gitignore b/works/life/computer-organization-experiment/.gitignore new file mode 100644 index 0000000..c795b05 --- /dev/null +++ b/works/life/computer-organization-experiment/.gitignore @@ -0,0 +1 @@ +build
\ No newline at end of file diff --git a/works/life/computer-organization-experiment/Makefile b/works/life/computer-organization-experiment/Makefile new file mode 100644 index 0000000..d44613c --- /dev/null +++ b/works/life/computer-organization-experiment/Makefile @@ -0,0 +1,21 @@ +all: build/counter_4.o build/test_bench.o build/full_adder_1.o build/test_bench + +build: + mkdir -p build + +build/counter_4.o: build counter_4.vhdl + ghdl analyze --workdir=build -fsynopsys counter_4.vhdl + +build/full_adder_1.o: build full_adder_1.vhdl + ghdl analyze --workdir=build -fsynopsys full_adder_1.vhdl + +build/test_bench.o: build test_bench.vhdl build/counter_4.o build/full_adder_1.o + ghdl analyze --workdir=build -fsynopsys test_bench.vhdl + +build/test_bench: build/counter_4.o build/full_adder_1.o build/test_bench.o + ghdl elaborate --workdir=build -fsynopsys -o build/test_bench test_bench + +.PHONY: all clean + +clean: + rm -r build diff --git a/works/life/computer-organization-experiment/counter_4.vhdl b/works/life/computer-organization-experiment/counter_4.vhdl new file mode 100644 index 0000000..23c1807 --- /dev/null +++ b/works/life/computer-organization-experiment/counter_4.vhdl @@ -0,0 +1,19 @@ +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +ENTITY counter_4 IS + PORT (CLK:IN STD_LOGIC; + CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); +END counter_4; +ARCHITECTURE behavior OF counter_4 IS +BEGIN + PROCESS(CLK) + VARIABLE CQI:STD_LOGIC_VECTOR(3 DOWNTO 0) := B"0000"; + BEGIN + IF CLK'EVENT AND CLK='1' THEN + CQI := CQI + 1; + END IF; + CQ<=CQI; + END PROCESS; +END behavior; diff --git a/works/life/computer-organization-experiment/full_adder_1.vhdl b/works/life/computer-organization-experiment/full_adder_1.vhdl new file mode 100644 index 0000000..9b269bf --- /dev/null +++ b/works/life/computer-organization-experiment/full_adder_1.vhdl @@ -0,0 +1,13 @@ +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity full_adder_1 is + port (A, B, CI:in std_logic; S, CO: out std_logic); +end full_adder_1; + +architecture behavior of full_adder_1 is +begin + S <= (A XOR B) XOR CI; + CO <= (A AND B) OR (B AND CI) OR (CI AND A); +end architecture; diff --git a/works/life/computer-organization-experiment/hdl-prj.json b/works/life/computer-organization-experiment/hdl-prj.json new file mode 100644 index 0000000..91428c1 --- /dev/null +++ b/works/life/computer-organization-experiment/hdl-prj.json @@ -0,0 +1,22 @@ +{ + "options": { + "ghdl_analysis": [ + "-fsynopsys", + "--workdir=build" + ] + }, + "files": [ + { + "file": "counter_4.vhdl", + "language": "vhdl" + }, + { + "file": "full_adder_1.vhdl", + "language": "vhdl" + }, + { + "file": "test_bench.vhdl", + "language": "vhdl" + } + ] +}
\ No newline at end of file diff --git a/works/life/computer-organization-experiment/test_bench.vhdl b/works/life/computer-organization-experiment/test_bench.vhdl new file mode 100644 index 0000000..be15df9 --- /dev/null +++ b/works/life/computer-organization-experiment/test_bench.vhdl @@ -0,0 +1,45 @@ +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity test_bench is +end test_bench; + +architecture test_counter_4 of test_bench is + signal CLK : STD_LOGIC; + signal CQ: STD_LOGIC_VECTOR(3 DOWNTO 0); +begin + counter: entity work.counter_4(behavior) + port map (CLK, CQ); + stimulus: process is + begin + for count_value in 0 to 2 ** 4 - 1 loop + if count_value mod 2 = 0 then + CLK <= '1'; + wait for 5 ns; + else + CLK <= '0'; + wait for 5 ns; + end if; + end loop; + end process stimulus; +end architecture test_counter_4; + + +architecture test_full_adder_1 of test_bench is + subtype v3 is std_logic_vector(2 downto 0); + signal I: v3 := B"000"; + signal S, CO : STD_LOGIC; +begin + adder: entity work.full_adder_1(behavior) + port map (I(2), I(1), I(0), S, CO); + stimulus: process is + variable ii : v3 := B"000"; + begin + loop + ii := ii + 1; + I <= ii; + wait for 5 ns; + end loop; + end process stimulus; +end architecture test_full_adder_1; |