aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlonkaars <loek@pipeframe.xyz>2022-11-28 09:21:52 +0100
committerlonkaars <loek@pipeframe.xyz>2022-11-28 09:21:52 +0100
commit68784722ac52da2743b409414225c68cf516c994 (patch)
tree71728f63c5b511b71d42f7eecd8700eba1ff90c5
parent453e099644b253bedc98bb20861d48f3eb40ef4f (diff)
fix alu working with longer testbench
l---------alu/alu.srcs/sources_1/add8bs.vhd1
-rw-r--r--alu/alu.xpr69
-rw-r--r--design/add8bs.dig190
-rw-r--r--src/add8bs.vhd42
-rw-r--r--src/alu.vhd32
5 files changed, 290 insertions, 44 deletions
diff --git a/alu/alu.srcs/sources_1/add8bs.vhd b/alu/alu.srcs/sources_1/add8bs.vhd
new file mode 120000
index 0000000..b702395
--- /dev/null
+++ b/alu/alu.srcs/sources_1/add8bs.vhd
@@ -0,0 +1 @@
+../../../src/add8bs.vhd \ No newline at end of file
diff --git a/alu/alu.xpr b/alu/alu.xpr
index db0f577..bb1f73a 100644
--- a/alu/alu.xpr
+++ b/alu/alu.xpr
@@ -42,8 +42,8 @@
<Option Name="SimulatorGccVersionVCS" Val="9.2.0"/>
<Option Name="SimulatorGccVersionRiviera" Val="9.3.0"/>
<Option Name="SimulatorGccVersionActiveHdl" Val="9.3.0"/>
- <Option Name="BoardPart" Val="digilentinc.com:basys3:part0:1.2"/>
- <Option Name="BoardPartRepoPaths" Val="$PPRDIR/../../../../.Xilinx/Vivado/2022.2/xhub/board_store/xilinx_board_store"/>
+ <Option Name="BoardPart" Val=""/>
+ <Option Name="SourceMgmtMode" Val="DisplayOnly"/>
<Option Name="ActiveSimSet" Val="sim_1"/>
<Option Name="DefaultLib" Val="xil_defaultlib"/>
<Option Name="ProjectType" Val="Default"/>
@@ -59,7 +59,7 @@
<Option Name="IPStaticSourceDir" Val="$PIPUSERFILESDIR/ipstatic"/>
<Option Name="EnableBDX" Val="FALSE"/>
<Option Name="DSABoardId" Val="basys3"/>
- <Option Name="WTXSimLaunchSim" Val="34"/>
+ <Option Name="WTXSimLaunchSim" Val="39"/>
<Option Name="WTModelSimLaunchSim" Val="0"/>
<Option Name="WTQuestaLaunchSim" Val="0"/>
<Option Name="WTIesLaunchSim" Val="0"/>
@@ -90,13 +90,13 @@
<FileSets Version="1" Minor="31">
<FileSet Name="sources_1" Type="DesignSrcs" RelSrcDir="$PSRCDIR/sources_1" RelGenDir="$PGENDIR/sources_1">
<Filter Type="Srcs"/>
- <File Path="$PSRCDIR/sources_1/binary_to_bcd_digit.vhd">
+ <File Path="$PSRCDIR/sources_1/add1b.vhd">
<FileInfo>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
</File>
- <File Path="$PSRCDIR/sources_1/binary_to_bcd.vhd">
+ <File Path="$PSRCDIR/sources_1/add8b.vhd">
<FileInfo>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
@@ -104,92 +104,87 @@
</File>
<File Path="$PSRCDIR/sources_1/alu.vhd">
<FileInfo>
- <Attr Name="AutoDisabled" Val="1"/>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
</File>
- <File Path="$PSRCDIR/sources_1/min8b.vhd">
+ <File Path="$PSRCDIR/sources_1/dispdrv.vhd">
<FileInfo>
- <Attr Name="AutoDisabled" Val="1"/>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
</File>
- <File Path="$PSRCDIR/sources_1/add8b.vhd">
+ <File Path="$PSRCDIR/sources_1/eq8b.vhd">
<FileInfo>
- <Attr Name="AutoDisabled" Val="1"/>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
</File>
- <File Path="$PSRCDIR/sources_1/twoc.vhd">
+ <File Path="$PSRCDIR/sources_1/half_add.vhd">
<FileInfo>
- <Attr Name="AutoDisabled" Val="1"/>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
</File>
- <File Path="$PSRCDIR/sources_1/add1b.vhd">
+ <File Path="$PSRCDIR/sources_1/min8b.vhd">
<FileInfo>
- <Attr Name="AutoDisabled" Val="1"/>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
</File>
- <File Path="$PSRCDIR/sources_1/half_add.vhd">
+ <File Path="$PSRCDIR/sources_1/rl8b.vhd">
<FileInfo>
- <Attr Name="AutoDisabled" Val="1"/>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
</File>
- <File Path="$PSRCDIR/sources_1/dispdrv.vhd">
+ <File Path="$PSRCDIR/sources_1/rr8b.vhd">
<FileInfo>
- <Attr Name="AutoDisabled" Val="1"/>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
</File>
- <File Path="$PSRCDIR/sources_1/eq8b.vhd">
+ <File Path="$PSRCDIR/sources_1/sl8b.vhd">
<FileInfo>
- <Attr Name="AutoDisabled" Val="1"/>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
</File>
<File Path="$PSRCDIR/sources_1/sr8b.vhd">
<FileInfo>
- <Attr Name="AutoDisabled" Val="1"/>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
</File>
- <File Path="$PSRCDIR/sources_1/rr8b.vhd">
+ <File Path="$PSRCDIR/sources_1/twoc.vhd">
<FileInfo>
- <Attr Name="AutoDisabled" Val="1"/>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
</File>
- <File Path="$PSRCDIR/sources_1/sl8b.vhd">
+ <File Path="$PSRCDIR/sources_1/binary_to_bcd_digit.vhd">
<FileInfo>
- <Attr Name="AutoDisabled" Val="1"/>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
</File>
- <File Path="$PSRCDIR/sources_1/rl8b.vhd">
+ <File Path="$PSRCDIR/sources_1/binary_to_bcd.vhd">
+ <FileInfo>
+ <Attr Name="UsedIn" Val="synthesis"/>
+ <Attr Name="UsedIn" Val="simulation"/>
+ </FileInfo>
+ </File>
+ <File Path="$PSRCDIR/sources_1/add8bs.vhd">
<FileInfo>
- <Attr Name="AutoDisabled" Val="1"/>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
</File>
<Config>
<Option Name="DesignMode" Val="RTL"/>
- <Option Name="TopModule" Val="binary_to_bcd"/>
+ <Option Name="TopModule" Val="ALU"/>
<Option Name="TopAutoSet" Val="TRUE"/>
+ <Option Name="dataflowViewerSettings" Val="min_width=16"/>
</Config>
</FileSet>
<FileSet Name="constrs_1" Type="Constrs" RelSrcDir="$PSRCDIR/constrs_1" RelGenDir="$PGENDIR/constrs_1">
@@ -200,15 +195,14 @@
</FileSet>
<FileSet Name="sim_1" Type="SimulationSrcs" RelSrcDir="$PSRCDIR/sim_1" RelGenDir="$PGENDIR/sim_1">
<Filter Type="Srcs"/>
- <File Path="$PSRCDIR/sim_1/alu_tb.vhd">
+ <File Path="$PSRCDIR/sim_1/twoc_tb.vhd">
<FileInfo>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
</File>
- <File Path="$PSRCDIR/sim_1/twoc_tb.vhd">
+ <File Path="$PSRCDIR/sim_1/alu_tb.vhd">
<FileInfo>
- <Attr Name="AutoDisabled" Val="1"/>
<Attr Name="UsedIn" Val="synthesis"/>
<Attr Name="UsedIn" Val="simulation"/>
</FileInfo>
@@ -225,6 +219,7 @@
<Option Name="PamSignalDriverFile" Val="xil_bypass_driver"/>
<Option Name="PamPseudoTop" Val="pseudo_tb"/>
<Option Name="SrcSet" Val="sources_1"/>
+ <Option Name="xsim.simulate.runtime" Val="10250ns"/>
</Config>
</FileSet>
<FileSet Name="utils_1" Type="Utils" RelSrcDir="$PSRCDIR/utils_1" RelGenDir="$PGENDIR/utils_1">
@@ -258,7 +253,9 @@
<Runs Version="1" Minor="19">
<Run Id="synth_1" Type="Ft3:Synth" SrcSet="sources_1" Part="xc7a35tcpg236-1" ConstrsSet="constrs_1" Description="Vivado Synthesis Defaults" AutoIncrementalCheckpoint="true" WriteIncrSynthDcp="false" State="current" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/synth_1">
<Strategy Version="1" Minor="2">
- <StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2022"/>
+ <StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2022">
+ <Desc>Vivado Synthesis Defaults</Desc>
+ </StratHandle>
<Step Id="synth_design"/>
</Strategy>
<ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2022"/>
@@ -267,7 +264,9 @@
</Run>
<Run Id="impl_1" Type="Ft2:EntireDesign" Part="xc7a35tcpg236-1" ConstrsSet="constrs_1" Description="Default settings for Implementation." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" State="current" SynthRun="synth_1" IncludeInArchive="true" IsChild="false" GenFullBitstream="true" AutoIncrementalDir="$PSRCDIR/utils_1/imports/impl_1" AutoRQSDir="$PSRCDIR/utils_1/imports/impl_1">
<Strategy Version="1" Minor="2">
- <StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2022"/>
+ <StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2022">
+ <Desc>Default settings for Implementation.</Desc>
+ </StratHandle>
<Step Id="init_design"/>
<Step Id="opt_design"/>
<Step Id="power_opt_design"/>
@@ -283,9 +282,7 @@
<RQSFiles/>
</Run>
</Runs>
- <Board>
- <Jumpers/>
- </Board>
+ <Board/>
<DashboardSummary Version="1" Minor="0">
<Dashboards>
<Dashboard Name="default_dashboard">
diff --git a/design/add8bs.dig b/design/add8bs.dig
new file mode 100644
index 0000000..5a02a1e
--- /dev/null
+++ b/design/add8bs.dig
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="utf-8"?>
+<circuit>
+ <version>1</version>
+ <attributes/>
+ <visualElements>
+ <visualElement>
+ <elementName>add8b.dig</elementName>
+ <elementAttributes/>
+ <pos x="520" y="240"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Label</string>
+ <string>A</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>8</int>
+ </entry>
+ </elementAttributes>
+ <pos x="400" y="240"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Label</string>
+ <string>B</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>8</int>
+ </entry>
+ </elementAttributes>
+ <pos x="400" y="280"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Label</string>
+ <string>Cin</string>
+ </entry>
+ </elementAttributes>
+ <pos x="400" y="320"/>
+ </visualElement>
+ <visualElement>
+ <elementName>add1b.dig</elementName>
+ <elementAttributes/>
+ <pos x="520" y="340"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Splitter</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Input Splitting</string>
+ <string>8,</string>
+ </entry>
+ <entry>
+ <string>splitterSpreading</string>
+ <int>5</int>
+ </entry>
+ <entry>
+ <string>Output Splitting</string>
+ <string>0-7,7-7</string>
+ </entry>
+ </elementAttributes>
+ <pos x="480" y="240"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Splitter</elementName>
+ <elementAttributes>
+ <entry>
+ <string>splitterSpreading</string>
+ <int>5</int>
+ </entry>
+ <entry>
+ <string>Input Splitting</string>
+ <string>8,</string>
+ </entry>
+ <entry>
+ <string>Output Splitting</string>
+ <string>0-7,7-7</string>
+ </entry>
+ </elementAttributes>
+ <pos x="440" y="260"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Out</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Label</string>
+ <string>X</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>8</int>
+ </entry>
+ </elementAttributes>
+ <pos x="640" y="240"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Out</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Label</string>
+ <string>Cout</string>
+ </entry>
+ </elementAttributes>
+ <pos x="640" y="340"/>
+ </visualElement>
+ </visualElements>
+ <wires>
+ <wire>
+ <p1 x="500" y="240"/>
+ <p2 x="520" y="240"/>
+ </wire>
+ <wire>
+ <p1 x="400" y="240"/>
+ <p2 x="480" y="240"/>
+ </wire>
+ <wire>
+ <p1 x="580" y="240"/>
+ <p2 x="640" y="240"/>
+ </wire>
+ <wire>
+ <p1 x="480" y="320"/>
+ <p2 x="600" y="320"/>
+ </wire>
+ <wire>
+ <p1 x="400" y="320"/>
+ <p2 x="460" y="320"/>
+ </wire>
+ <wire>
+ <p1 x="500" y="340"/>
+ <p2 x="520" y="340"/>
+ </wire>
+ <wire>
+ <p1 x="580" y="340"/>
+ <p2 x="640" y="340"/>
+ </wire>
+ <wire>
+ <p1 x="460" y="260"/>
+ <p2 x="520" y="260"/>
+ </wire>
+ <wire>
+ <p1 x="580" y="260"/>
+ <p2 x="600" y="260"/>
+ </wire>
+ <wire>
+ <p1 x="420" y="260"/>
+ <p2 x="440" y="260"/>
+ </wire>
+ <wire>
+ <p1 x="460" y="360"/>
+ <p2 x="520" y="360"/>
+ </wire>
+ <wire>
+ <p1 x="460" y="280"/>
+ <p2 x="520" y="280"/>
+ </wire>
+ <wire>
+ <p1 x="400" y="280"/>
+ <p2 x="420" y="280"/>
+ </wire>
+ <wire>
+ <p1 x="480" y="380"/>
+ <p2 x="520" y="380"/>
+ </wire>
+ <wire>
+ <p1 x="480" y="320"/>
+ <p2 x="480" y="380"/>
+ </wire>
+ <wire>
+ <p1 x="420" y="260"/>
+ <p2 x="420" y="280"/>
+ </wire>
+ <wire>
+ <p1 x="600" y="260"/>
+ <p2 x="600" y="320"/>
+ </wire>
+ <wire>
+ <p1 x="460" y="280"/>
+ <p2 x="460" y="320"/>
+ </wire>
+ </wires>
+ <measurementOrdering/>
+</circuit> \ No newline at end of file
diff --git a/src/add8bs.vhd b/src/add8bs.vhd
new file mode 100644
index 0000000..c5a1530
--- /dev/null
+++ b/src/add8bs.vhd
@@ -0,0 +1,42 @@
+LIBRARY ieee;
+USE ieee.std_logic_1164.all;
+USE ieee.numeric_std.all;
+
+entity add8bs is
+ port (
+ A, B: in std_logic_vector(7 downto 0);
+ Cin: in std_logic;
+ X: out std_logic_vector(7 downto 0);
+ Cout: out std_logic);
+end add8bs;
+
+architecture Behavioral of add8bs is
+ signal C: std_logic; -- Cout0 -> Cin1
+ component add8b
+ port (
+ A, B: in std_logic_vector(7 downto 0);
+ Cin: in std_logic;
+ X: out std_logic_vector(7 downto 0);
+ Cout: out std_logic);
+ end component;
+ component add1b
+ port (
+ A, B, Cin: in std_logic;
+ X, Cout: out std_logic);
+ end component;
+begin
+ add0: component add8b
+ port map (
+ A => A,
+ B => B,
+ Cin => Cin,
+ X => X,
+ Cout => C);
+ add1: component add1b
+ port map (
+ A => A(7),
+ B => B(7),
+ Cin => C,
+ X => Cout,
+ Cout => open);
+end Behavioral;
diff --git a/src/alu.vhd b/src/alu.vhd
index 7da5696..1d3a1e8 100644
--- a/src/alu.vhd
+++ b/src/alu.vhd
@@ -26,8 +26,22 @@ architecture Behavioral of ALU is
R_AllZeros,
R_AllOnes,
R: std_logic_vector(7 downto 0) := (others => '0');
- signal C_AMinB, C_BMinA, C_MinA, C_MinB: std_logic := '0'; -- Minus carry out (test bench edge case)
- component add8b is
+ signal C_AplusB,
+ C_AminB,
+ C_BminA,
+ C_Dummy,
+ C_OnlyA,
+ C_OnlyB,
+ C_MinA,
+ C_MinB,
+ C_ShiftLeftA,
+ C_ShiftRightA,
+ C_RotateLeftA,
+ C_RotateRightA,
+ C_AllZeros,
+ C_AllOnes,
+ C: std_logic := '0';
+ component add8bs is
port (
A: in std_logic_vector(7 downto 0);
B: in std_logic_vector(7 downto 0);
@@ -80,13 +94,13 @@ begin
R_AllOnes <= x"ff";
R_AllZeros <= x"00";
- AplusB: component add8b
+ AplusB: component add8bs
port map(
A => A,
B => B,
Cin => '0',
X => R_AplusB,
- Cout => open);
+ Cout => C_AplusB);
AminB: component min8b
port map(
A => A,
@@ -154,14 +168,15 @@ begin
R_AllOnes when x"f", -- AllOnes
(others => '0') when others;
with Op select
- Cout <=
- R(7) when x"0" | x"3" | x"c" | x"d", -- AplusB, MinA, MinB, Dummy
+ C <=
+ C_AplusB when x"0", -- AplusB
C_AMinB when x"1", -- AminB
C_BMinA when x"2", -- BminA
+ '0' when x"3" | x"c" | x"d", -- Dummy's
A(7) when x"4" | x"8" | x"a", -- OnlyA, ShiftLeftA, RotateLeftA
B(7) when x"5", -- OnlyB
- C_MinA when x"6", -- MinA TODO FIX
- C_MinB when x"7", -- MinB TODO FIX
+ C_MinA when x"6", -- MinA
+ C_MinB when x"7", -- MinB
'0' when x"9" | x"b" | x"e", -- ShiftRightA, RotateRightA, AllZeros
'1' when x"f", -- AllOnes
'0' when others;
@@ -171,4 +186,5 @@ begin
B => B,
Equal => Equal);
Res <= R;
+ Cout <= C;
end Behavioral;