Compare commits

..

4 Commits

Author SHA1 Message Date
81524edd18 feat(vscode): add custom color theme settings 2025-07-18 19:19:57 +02:00
40df0e3e65 refactor(module): improve naming consistency in pipeline components 2025-07-18 19:19:23 +02:00
30d00812c1 chore(devcontainer): updates image and configuration
- Updates the devcontainer image to a newer version.
- Modifies the GPG agent path for consistency.
- Adds the WakaTime extension for tracking development time.
- Updates the postStartCommand to install hdlbuild from a
  private package repository.
2025-07-15 14:58:21 +00:00
a143e8a1aa refactor: Simplifies ready signal logic in buffer controller
- Removes redundant signal and assigns directly to output.
- Simplifies the state update logic for the ready signal.
2025-07-11 10:52:06 +00:00
4 changed files with 33 additions and 22 deletions

View File

@@ -1,18 +1,19 @@
{ {
"name": "Xilinx ISE 14.7", "name": "Xilinx ISE 14.7",
"image": "xilinx-ise:14.7", "image": "git.0xmax42.io/simdev/xilinx-ise:latest",
"runArgs": [ "runArgs": [
"--privileged", "--privileged",
"--cap-add=SYS_ADMIN", "--cap-add=SYS_ADMIN",
"--shm-size=2g", "--shm-size=2g",
"-v", "-v",
"/run/user/1000/gnupg/S.gpg-agent:/run/user/1000/gnupg/S.gpg-agent" "/run/user/1000/gnupg/S.gpg-agent:/home/xilinx/.gnupg/S.gpg-agent"
], ],
"customizations": { "customizations": {
"vscode": { "vscode": {
"extensions": [ "extensions": [
"/home/xilinx/vsxirepo/vhdl-by-hgb.vsix", "/home/xilinx/vsxirepo/vhdl-by-hgb.vsix",
"eamodio.gitlens" "eamodio.gitlens",
"WakaTime.vscode-wakatime"
], ],
"settings": { "settings": {
"terminal.integrated.defaultProfile.linux": "bash" "terminal.integrated.defaultProfile.linux": "bash"
@@ -26,5 +27,5 @@
"forwardPorts": [ "forwardPorts": [
10000 10000
], ],
"postStartCommand": "git config --global user.signingkey 87C8A5DD5C14DF55DBE1DB4199AC216D447E61C0 && git config --global gpg.format openpgp && git config --global commit.gpgsign true && git config --global tag.forceSignAnnotated true && sudo apt update && sudo apt upgrade -y" "postStartCommand": "git config --global user.signingkey 87C8A5DD5C14DF55DBE1DB4199AC216D447E61C0 && git config --global gpg.format openpgp && git config --global commit.gpgsign true && git config --global tag.forceSignAnnotated true && pip install --upgrade --index-url https://git.0xmax42.io/api/packages/maxp/pypi/simple/ --extra-index-url https://pypi.org/simple/ hdlbuild"
} }

12
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,12 @@
{
"workbench.colorCustomizations": {
"activityBar.activeBackground": "#9ed8bc",
"activityBar.background": "#9ed8bc",
"activityBar.foreground": "#15202b",
"activityBar.inactiveForeground": "#15202b99",
"activityBarBadge.background": "#a177c8",
"activityBarBadge.foreground": "#15202b"
},
"peacock.color": "#7ac9a3",
"peacock.remoteColor": "#e67338"
}

View File

@@ -41,7 +41,6 @@ architecture RTL of PipelineBufferController is
signal C_Enable : std_logic := '0'; signal C_Enable : std_logic := '0';
signal R_IsBuffered : std_logic := '0'; signal R_IsBuffered : std_logic := '0';
signal R_Ready : std_logic := '1';
begin begin
--@ Set mux to buffered mode if data is available in the buffer. --@ Set mux to buffered mode if data is available in the buffer.
@@ -51,21 +50,19 @@ begin
--@ Set the valid signal to high if data is available in the buffer or if data is valid. --@ Set the valid signal to high if data is available in the buffer or if data is valid.
O_Valid <= R_IsBuffered or I_Valid; O_Valid <= R_IsBuffered or I_Valid;
O_Ready <= R_Ready;
process (I_CLK) process (I_CLK)
begin begin
if rising_edge(I_CLK) then if rising_edge(I_CLK) then
if I_RST = G_ResetActiveAt then if I_RST = G_ResetActiveAt then
R_IsBuffered <= '0'; R_IsBuffered <= '0';
R_Ready <= '1'; O_Ready <= '1';
elsif I_CE = '1' then elsif I_CE = '1' then
if R_IsBuffered = '0' and I_Valid = '1' then if R_IsBuffered = '0' and I_Valid = '1' then
R_IsBuffered <= '1'; R_IsBuffered <= '1';
R_Ready <= '0'; O_Ready <= '0';
elsif I_Ready = '1' and (R_IsBuffered or I_Valid) = '1' then elsif I_Ready = '1' and (R_IsBuffered or I_Valid) = '1' then
R_IsBuffered <= '0'; R_IsBuffered <= '0';
R_Ready <= '1'; O_Ready <= '1';
end if; end if;
end if; end if;
end if; end if;

View File

@@ -30,9 +30,11 @@ entity Pipeline_pb_Module is
I_CLK : in std_logic; I_CLK : in std_logic;
I_RST : in std_logic; I_RST : in std_logic;
I_CE : in std_logic; I_CE : in std_logic;
---
I_Data : in std_logic_vector(G_Width - 1 downto 0); I_Data : in std_logic_vector(G_Width - 1 downto 0);
I_Valid : in std_logic; I_Valid : in std_logic;
O_Ready : out std_logic; O_Ready : out std_logic;
---
O_Data : out std_logic_vector(G_Width - 1 downto 0); O_Data : out std_logic_vector(G_Width - 1 downto 0);
O_Valid : out std_logic; O_Valid : out std_logic;
I_Ready : in std_logic I_Ready : in std_logic
@@ -40,7 +42,7 @@ entity Pipeline_pb_Module is
end entity Pipeline_pb_Module; end entity Pipeline_pb_Module;
architecture RTL of Pipeline_pb_Module is architecture RTL of Pipeline_pb_Module is
signal C_Pipeline0Enable : std_logic; signal C_PipelineEnable : std_logic;
signal C_PipelineBufferEnable : std_logic_vector(1 downto 0) := (others => '0'); signal C_PipelineBufferEnable : std_logic_vector(1 downto 0) := (others => '0');
signal R_Valid : std_logic; signal R_Valid : std_logic;
@@ -48,7 +50,7 @@ architecture RTL of Pipeline_pb_Module is
signal R_Data : std_logic_vector(G_Width - 1 downto 0); signal R_Data : std_logic_vector(G_Width - 1 downto 0);
signal C_Data : std_logic_vector(G_Width - 1 downto 0); signal C_Data : std_logic_vector(G_Width - 1 downto 0);
begin begin
PipelineControllerIn : entity work.PipelineController INST_PipelineControllerIn : entity work.PipelineController
generic map( generic map(
G_PipelineStages => G_PipelineStages, G_PipelineStages => G_PipelineStages,
G_ResetActiveAt => '1' G_ResetActiveAt => '1'
@@ -57,14 +59,14 @@ begin
I_CLK => I_CLK, I_CLK => I_CLK,
I_RST => I_RST, I_RST => I_RST,
I_CE => I_CE, I_CE => I_CE,
O_Enable => C_Pipeline0Enable, O_Enable => C_PipelineEnable,
I_Valid => I_Valid, I_Valid => I_Valid,
O_Ready => O_Ready, O_Ready => O_Ready,
O_Valid => R_Valid, O_Valid => R_Valid,
I_Ready => R_Ready I_Ready => R_Ready
); );
PipelineRegisterIn : entity work.PipelineRegister INST_PipelineRegisterIn : entity work.PipelineRegister
generic map( generic map(
G_PipelineStages => G_PipelineStages, G_PipelineStages => G_PipelineStages,
G_Width => G_Width, G_Width => G_Width,
@@ -72,7 +74,7 @@ begin
) )
port map( port map(
I_CLK => I_CLK, I_CLK => I_CLK,
I_Enable => C_Pipeline0Enable, I_Enable => C_PipelineEnable,
I_Data => I_Data, I_Data => I_Data,
O_Data => R_Data O_Data => R_Data
); );
@@ -84,8 +86,8 @@ begin
--------- ---------
-- Pipeline Buffer Generation based on G_EnablePipelineBuffer -- Pipeline Buffer Generation based on G_EnablePipelineBuffer
gen_pipeline_buffer : if G_EnablePipelineBuffer generate GEN_PipelineBuffer : if G_EnablePipelineBuffer generate
PipelineBufferController : entity work.PipelineBufferController INST_PipelineBufferController : entity work.PipelineBufferController
generic map( generic map(
G_ResetActiveAt => '1' G_ResetActiveAt => '1'
) )
@@ -100,7 +102,7 @@ begin
I_Ready => I_Ready I_Ready => I_Ready
); );
PipelineBuffer : entity work.PipelineBuffer INST_PipelineBuffer : entity work.PipelineBuffer
generic map( generic map(
G_Width => G_Width G_Width => G_Width
) )
@@ -110,14 +112,13 @@ begin
I_Data => C_Data, I_Data => C_Data,
O_Data => O_Data O_Data => O_Data
); );
end generate gen_pipeline_buffer; end generate GEN_PipelineBuffer;
-- Direct connection when pipeline buffer is disabled -- Direct connection when pipeline buffer is disabled
gen_direct_connection : if not G_EnablePipelineBuffer generate GEN_PassthroughWithoutBuffer : if not G_EnablePipelineBuffer generate
-- Direct signal connections (bypass pipeline buffer)
O_Valid <= R_Valid; O_Valid <= R_Valid;
O_Data <= R_Data; O_Data <= R_Data;
R_Ready <= I_Ready; R_Ready <= I_Ready;
end generate gen_direct_connection; end generate GEN_PassthroughWithoutBuffer;
end architecture RTL; end architecture RTL;